Tekensets in reguliere expressies van PHP
Tekengroepen \d en \w zijn niet
erg flexibel. Zelfs een eenvoudige taak als
alle letters vinden, maar geen cijfers -
kan niet door hen worden opgelost. Voor dergelijke taken
moeten vierkante haken worden gebruikt, die
de bewerking OF vertegenwoordigen.
Vierkante haken vervangen één teken,
elk van de genoemde binnenin. Bijvoorbeeld,
zo: #x[abc]x# - zeggen we dat
aan de randen de letters x moeten staan, en binnenin
- één teken: of 'a', of 'b',
of 'c'.
Na vierkante haken kunnen herhalingsoperatoren
worden geschreven. Bijvoorbeeld, zo: #x[abc]+x#
- zeggen we dat binnen de x'en
een willekeurig aantal tekens 'a', 'b'
en 'c' kan zijn - in elke combinatie.
Je kunt niet alleen tekens opsommen, maar ook
tekengroepen maken door een koppelteken tussen twee tekens
te plaatsen. Bijvoorbeeld, zo: #[a-d]#
- krijgen we alle tekens van 'a' tot
'd'.
Laten we naar voorbeelden kijken.
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
tussen de x'en een willekeurige letter van 'a'
tot 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'! ! ! x@x'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
tussen de x'en een willekeurige letter van 'a'
tot 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'! ! xmx x@x'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
tussen de x'en een willekeurige letter van 'A'
tot 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'xax ! xcx x@x'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
tussen de x'en een willekeurig cijfer van 0 tot 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'xax ! ! ! x@x'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
tussen de x'en een willekeurig cijfer van 3 tot 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'xax x1x ! ! x@x'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
tussen de x'en een willekeurige letter van 'a'
tot 'z' of een cijfer van 1 tot 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'! ! ! ! x@x'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
tussen de x'en een willekeurige letter van 'a'
tot 'z' of een letter van 'A' tot
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'! ! ! x5x x@x'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
tussen de x'en een willekeurige letter van 'a'
tot 'z' of de cijfers 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'! ! ! ! x3x'
Voorbeeld
In dit voorbeeld ziet het zoekpatroon er als volgt uit:
tussen de x'en letters van 'a' tot 'z'
in een hoeveelheid van 1 of meer:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'xx ! ! ! x123x xa3x'
Voorbeeld
Laten we het zo maken dat het aantal letters ook nul kan zijn:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Als resultaat wordt het volgende in de variabele geschreven:
'! ! ! x123x xa3x'
Praktische opdrachten
Gegeven een string:
<?php
$str = 'aba aea aca aza axa';
?>
Schrijf een reguliere expressie die vindt volgens het volgende
patroon: aan de randen staan de letters 'a',
en daartussen - de letter 'b', 'e'
of 'x'.
Gegeven een string:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Schrijf een reguliere expressie die vindt volgens het volgende
patroon: aan de randen staan de letters 'a',
en daartussen - een cijfer van 3 tot 6.
Gegeven een string:
<?php
$str = 'aba aea afa aha aga';
?>
Schrijf een reguliere expressie die vindt volgens het volgende
patroon: aan de randen staan de letters 'a',
en daartussen - een letter van a tot g.
Gegeven een string:
<?php
$str = 'aba aea afa aha aga';
?>
Schrijf een reguliere expressie die vindt volgens het volgende
patroon: aan de randen staan de letters 'a',
en daartussen - een letter van a tot f en van j tot z.
Gegeven een string:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Schrijf een reguliere expressie die vindt volgens het volgende
patroon: aan de randen staan de letters 'a',
en daartussen - een letter van a tot f en van A tot D.
Gegeven een string:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Schrijf een reguliere expressie die vindt volgens het volgende
patroon: aan de randen staan de letters 'a',
en daartussen - kleine Latijnse letters,
zonder de anderen aan te raken.
Gegeven een string:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Schrijf een reguliere expressie die vindt volgens het volgende
patroon: aan de randen staan de letters 'a',
en daartussen - kleine en grote Latijnse
letters, zonder de anderen aan te raken.
Gegeven een string:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Schrijf een reguliere expressie die vindt volgens het volgende
patroon: aan de randen staan de letters 'a',
en daartussen - kleine Latijnse letters
en cijfers, zonder de anderen aan te raken.