Merkkijoukot PHP:n säännöllisissä lausekkeissa

Merkkiryhmät \d ja \w eivät ole kovin joustavia. Jopa niin yksinkertainen tehtävä kuin löytää kaikki kirjaimet, mutta ei numeroita - ei voida ratkaista niillä. Tällaisiin tehtäviin tulisi käyttää hakasulkuja, jotka edustavat TAI-operaatiota.

Hakasulkeet korvaavat yhden merkin, minkä tahansa niiden sisällä luetelluista. Esimerkiksi, näin: #x[abc]x# - sanomme, että reunoilla täytyy olla kirjain x, ja sisällä - yksi merkki: joko 'a', tai 'b', tai 'c'.

Hakasulkujen jälkeen voi kirjoittaa toistoominaisuuksia. Esimerkiksi näin: #x[abc]+x# - sanomme, että x:ien sisällä voi olla mikä tahansa määrä merkkejä 'a', 'b' ja 'c' - missä tahansa yhdistelmissä.

Voi ei vain luetella merkkejä, vaan luoda merkkiryhmiä kirjoittamalla kahden merkin väliin viiva. Esimerkiksi näin: #[a-d]# - saamme kaikki merkit 'a':sta 'd':hen.

Katsotaan esimerkein.

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: x:ien välissä mikä tahansa kirjain 'a':sta 'z':hen:

php<?php
  $str = 'xax xbx xcx x@x';
  $res = preg_replace('#x[a-z]x#', '!', $str);
?>

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! ! x@x'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: x:ien välissä mikä tahansa kirjain 'a':sta 'k':hen:

php<?php
  $str = 'xax xbx xmx x@x';
  $res = preg_replace('#x[a-k]x#', '!', $str);
?>

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! xmx x@x'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: x:ien välissä mikä tahansa kirjain 'A':sta 'Z':hen:

php<?php
  $str = 'xax xBx xcx x@x';
  $res = preg_replace('#x[A-Z]x#', '!', $str);
?>

Tuloksena muuttujaan kirjoitetaan seuraava:

php'xax ! xcx x@x'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: x:ien välissä mikä tahansa numero 0:sta 9:ään:

php<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[0-9]x#', '!', $str);
?>

Tuloksena muuttujaan kirjoitetaan seuraava:

php'xax ! ! ! x@x'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: x:ien välissä mikä tahansa numero 3:sta 7:ään:

php<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[3-7]x#', '!', $str);
?>

Tuloksena muuttujaan kirjoitetaan seuraava:

php'xax x1x ! ! x@x'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: x:ien välissä mikä tahansa kirjain 'a':sta 'z':hen tai numero 1:stä 9:ään:

php<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! ! ! x@x'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: x:ien välissä mikä tahansa kirjain 'a':sta 'z':hen tai kirjain 'A':sta 'Z':hen:

php<?php
  $str = 'xax xBx xcx x5x x@x';
  $res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! ! x5x x@x'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: x:ien välissä mikä tahansa kirjain 'a':sta 'z':hen tai numerot 1, 2:

php<?php
  $str = 'xax xbx x1x x2x x3x';
  $res = preg_replace('#x[a-z12]x#', '!', $str);
?>

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! ! ! x3x'

Esimerkki

Tässä esimerkissä hakumalli näyttää tältä: x:ien välissä kirjaimet 'a':sta 'z':hen määrässä 1 tai enemmän:

php<?php
  $str = 'xx xabesx xaadx x123x xa3x';
  $res = preg_replace('#x[a-z]+x#', '!', $str);
?>

Tuloksena muuttujaan kirjoitetaan seuraava:

php'xx ! ! ! x123x xa3x'

Esimerkki

Tehdään niin, että kirjainten määrä voi olla myös nolla:

php<?php
  $str = 'xx xabesx xaadx x123x xa3x';
  $res = preg_replace('#x[a-z]*x#', '!', $str);
?>

Tuloksena muuttujaan kirjoitetaan seuraava:

php'! ! ! x123x xa3x'

Käytännön tehtävät

Задание 1

Annettu merkkijono:

php<?php
  $str = 'aba aea aca aza axa';
?>

Kirjoita säännöllinen lauseke, joka löytää seuraavan kaavan mukaisesti: reunoilla on kirjaimet 'a', ja niiden välissä - kirjain 'b', 'e' tai 'x'.

Задание 2

Annettu merkkijono:

php<?php
  $str = 'a1a a3a a7a a9a aba';
?>

Kirjoita säännöllinen lauseke, joka löytää seuraavan kaavan mukaisesti: reunoilla on kirjaimet 'a', ja niiden välissä - numero 3:sta 6:teen.

Задание 3

Annettu merkkijono:

php<?php
  $str = 'aba aea afa aha aga';
?>

Kirjoita säännöllinen lauseke, joka löytää seuraavan kaavan mukaisesti: reunoilla on kirjaimet 'a', ja niiden välissä - kirjain a:sta g:hen.

Задание 4

Annettu merkkijono:

php<?php
  $str = 'aba aea afa aha aga';
?>

Kirjoita säännöllinen lauseke, joka löytää seuraavan kaavan mukaisesti: reunoilla on kirjaimet 'a', ja niiden välissä - kirjain a:sta f:ään ja j:stä z:hen.

Задание 5

Annettu merkkijono:

php<?php
  $str = 'aAa aea aEa aJa a3a';
?>

Kirjoita säännöllinen lauseke, joka löytää seuraavan kaavan mukaisesti: reunoilla on kirjaimet 'a', ja niiden välissä - kirjain a:sta f:ään ja A:sta D:hen.

Задание 6

Annettu merkkijono:

php<?php
  $str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>

Kirjoita säännöllinen lauseke, joka löytää seuraavan kaavan mukaisesti: reunoilla on kirjaimet 'a', ja niiden välissä - pienet latinalaiset kirjaimet, koskematta muihin.

Задание 7

Annettu merkkijono:

php<?php
  $str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>

Kirjoita säännöllinen lauseke, joka löytää seuraavan kaavan mukaisesti: reunoilla on kirjaimet 'a', ja niiden välissä - pienet ja suuret latinalaiset kirjaimet, koskematta muihin.

Задание 8

Annettu merkkijono:

php<?php
  $str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>

Kirjoita säännöllinen lauseke, joka löytää seuraavan kaavan mukaisesti: reunoilla on kirjaimet 'a', ja niiden välissä - pienet latinalaiset kirjaimet ja numerot, koskematta muihin.