Teckenuppsättningar i reguljära uttryck i PHP
Teckengrupperna \d och \w är inte
särskilt flexibla. Även en så enkel uppgift
som att hitta alla bokstäver, men inte siffror -
kan inte lösas med dem. För sådana uppgifter
bör hakparenteser användas, vilka representerar
en ELLER-operation.
Hakparenteser ersätter ett tecken,
varsomhelst av de som anges inuti. Till exempel,
så här: #x[abc]x# - säger vi att
det vid kanterna måste finnas bokstaven x, och inuti
- ett tecken: antingen 'a', eller 'b',
eller 'c'.
Efter hakparenteser kan repetitionsoperatorer
skrivas. Till exempel, så här: #x[abc]+x#
- säger vi att inuti x kan finnas
ett valfritt antal tecken 'a', 'b'
och 'c' - i valfria kombinationer.
Man kan inte bara räkna upp tecken, utan skapa
teckengrupper genom att skriva ett bindestreck mellan två tecken.
Till exempel, så här: #[a-d]#
- får vi alla tecken från 'a' till
'd'.
Låt oss titta på exempel.
Exempel
I detta exempel ser sökmönstret ut så här:
mellan x valfri bokstav från 'a'
till 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'! ! ! x@x'
Exempel
I detta exempel ser sökmönstret ut så här:
mellan x valfri bokstav från 'a'
till 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'! ! xmx x@x'
Exempel
I detta exempel ser sökmönstret ut så här:
mellan x valfri bokstav från 'A'
till 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'xax ! xcx x@x'
Exempel
I detta exempel ser sökmönstret ut så här:
mellan x valfri siffra från 0 till 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'xax ! ! ! x@x'
Exempel
I detta exempel ser sökmönstret ut så här:
mellan x valfri siffra från 3 till 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'xax x1x ! ! x@x'
Exempel
I detta exempel ser sökmönstret ut så här:
mellan x valfri bokstav från 'a'
till 'z' eller siffra från 1 till 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'! ! ! ! x@x'
Exempel
I detta exempel ser sökmönstret ut så här:
mellan x valfri bokstav från 'a'
till 'z' eller bokstav från 'A' till
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'! ! ! x5x x@x'
Exempel
I detta exempel ser sökmönstret ut så här:
mellan x valfri bokstav från 'a'
till 'z' eller siffrorna 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'! ! ! ! x3x'
Exempel
I detta exempel ser sökmönstret ut så här:
mellan x bokstäver från 'a' till 'z'
i antal från 1 och fler:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'xx ! ! ! x123x xa3x'
Exempel
Låt oss göra så att antalet bokstäver kan vara noll också:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Som ett resultat kommer följande att skrivas till variabeln:
'! ! ! x123x xa3x'
Praktiska uppgifter
Given en sträng:
<?php
$str = 'aba aea aca aza axa';
?>
Skriv ett reguljärt uttryck som hittar enligt följande
mönster: vid kanterna står bokstaven 'a',
och mellan dem - bokstaven 'b', 'e'
eller 'x'.
Given en sträng:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Skriv ett reguljärt uttryck som hittar enligt följande
mönster: vid kanterna står bokstaven 'a',
och mellan dem - en siffra från 3:e till 6:a.
Given en sträng:
<?php
$str = 'aba aea afa aha aga';
?>
Skriv ett reguljärt uttryck som hittar enligt följande
mönster: vid kanterna står bokstaven 'a',
och mellan dem - en bokstav från a till g.
Given en sträng:
<?php
$str = 'aba aea afa aha aga';
?>
Skriv ett reguljärt uttryck som hittar enligt följande
mönster: vid kanterna står bokstaven 'a',
och mellan dem - en bokstav från a till f och från j till z.
Given en sträng:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Skriv ett reguljärt uttryck som hittar enligt följande
mönster: vid kanterna står bokstaven 'a',
och mellan dem - en bokstav från a till f och från A till D.
Given en sträng:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Skriv ett reguljärt uttryck som hittar enligt följande
mönster: vid kanterna står bokstaven 'a',
och mellan dem - små latinska bokstäver,
utan att påverka de andra.
Given en sträng:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Skriv ett reguljärt uttryck som hittar enligt följande
mönster: vid kanterna står bokstaven 'a',
och mellan dem - små och stora latinska
bokstäver, utan att påverka de andra.
Given en sträng:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Skriv ett reguljärt uttryck som hittar enligt följande
mönster: vid kanterna står bokstaven 'a',
och mellan dem - små latinska bokstäver
och siffror, utan att påverka de andra.