Zestawy znaków w wyrażeniach regularnych PHP
Grupy znaków \d i \w nie
są zbyt elastyczne. Nawet tak proste zadanie,
jak znaleźć wszystkie litery, ale nie cyfry -
nie może być przez nie rozwiązane. Do takich zadań
należy używać nawiasów kwadratowych, reprezentujących
operację LUB.
Nawiasy kwadratowe zastępują jeden znak,
dowolny z wymienionych wewnątrz. Na przykład,
w ten sposób: #x[abc]x# - mówimy, że
na krawędziach muszą stać litery x, a w środku
- jeden znak: lub 'a', lub 'b',
lub 'c'.
Po nawiasach kwadratowych można pisać operatory
powtórzenia. Na przykład, w ten sposób: #x[abc]+x#
- mówimy, że wewnątrz x-ów może być
dowolna liczba znaków 'a', 'b'
i 'c' - w dowolnych kombinacjach.
Można nie tylko wymieniać znaki, ale tworzyć
grupy znaków, zapisując między dwoma znakami
myślnik. Na przykład, w ten sposób: #[a-d]#
- otrzymujemy wszystkie znaki od 'a' do
'd'.
Spójrzmy na przykłady.
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
między x-ami dowolna litera od 'a'
do 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'! ! ! x@x'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
między x-ami dowolna litera od 'a'
do 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'! ! xmx x@x'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
między x-ami dowolna litera od 'A'
do 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'xax ! xcx x@x'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
między x-ami dowolna cyfra od 0 do 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'xax ! ! ! x@x'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
między x-ami dowolna cyfra od 3 do 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'xax x1x ! ! x@x'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
między x-ami dowolna litera od 'a'
do 'z' lub cyfra od 1 do 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'! ! ! ! x@x'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
między x-ami dowolna litera od 'a'
do 'z' lub litera od 'A' do
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'! ! ! x5x x@x'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
między x-ami dowolna litera od 'a'
do 'z' lub cyfry 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'! ! ! ! x3x'
Przykład
W tym przykładzie wzorzec wyszukiwania wygląda tak:
między x-ami litery od 'a' do 'z'
w liczbie od 1 i więcej:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'xx ! ! ! x123x xa3x'
Przykład
Zróbmy tak, aby liczba liter mogła być i zero:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
W rezultacie do zmiennej zostanie zapisane następujące:
'! ! ! x123x xa3x'
Zadania praktyczne
Dany jest ciąg:
<?php
$str = 'aba aea aca aza axa';
?>
Napisz wyrażenie regularne, które znajdzie według następującego
wzorca: na krawędziach stoją litery 'a',
a między nimi - litera 'b', 'e'
lub 'x'.
Dany jest ciąg:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Napisz wyrażenie regularne, które znajdzie według następującego
wzorca: na krawędziach stoją litery 'a',
a między nimi - cyfra od 3-ch do 6-ciu.
Dany jest ciąg:
<?php
$str = 'aba aea afa aha aga';
?>
Napisz wyrażenie regularne, które znajdzie według następującego
wzorca: na krawędziach stoją litery 'a',
a między nimi - litera od a do g.
Dany jest ciąg:
<?php
$str = 'aba aea afa aha aga';
?>
Napisz wyrażenie regularne, które znajdzie według następującego
wzorca: na krawędziach stoją litery 'a',
a między nimi - litera od a do f i od j do z.
Dany jest ciąg:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Napisz wyrażenie regularne, które znajdzie według następującego
wzorca: na krawędziach stoją litery 'a',
a między nimi - litera od a do f i od A do D.
Dany jest ciąg:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Napisz wyrażenie regularne, które znajdzie według następującego
wzorca: na krawędziach stoją litery 'a',
a między nimi - małe litery łacińskie,
nie dotykając pozostałych.
Dany jest ciąg:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Napisz wyrażenie regularne, które znajdzie według następującego
wzorca: na krawędziach stoją litery 'a',
a między nimi - małe i duże litery łacińskie, nie dotykając pozostałych.
Dany jest ciąg:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Napisz wyrażenie regularne, które znajdzie według następującego
wzorca: na krawędziach stoją litery 'a',
a między nimi - małe litery łacińskie
i cyfry, nie dotykając pozostałych.