Tegnsett i regulære uttrykk i PHP
Tegngruppene \d og \w er ikke
veldig fleksible. Selv en enkel oppgave
som å finne alle bokstaver, men ikke tall -
kan ikke løses av dem. For slike oppgaver
bor en bruke hakeparenteser, som representerer
en ELLER-operasjon.
Hakeparenteser erstatter ett tegn,
hvilket som helst av de som er opplistet inni. For eksempel,
slik: #x[abc]x# - sier vi at
det må være bokstaven x på kantene, og inni
- ett tegn: enten 'a', eller 'b',
eller 'c'.
Etter hakeparenteser kan en skrive repetisjons-
operatorer. For eksempel, slik: #x[abc]+x#
- sier vi at inni x-ene kan det være
hvilket som helst antall tegn 'a', 'b'
og 'c' - i alle kombinasjoner.
En kan ikke bare liste opp tegn, men også lage
tegn-grupper ved å skrive bindestrek mellom to tegn.
For eksempel, slik: #[a-d]#
- får vi alle tegn fra 'a' til
'd'.
La oss se på eksempler.
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
mellom x-ene hvilken som helst bokstav fra 'a'
til 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Resultatet i variabelen vil bli som følger:
'! ! ! x@x'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
mellom x-ene hvilken som helst bokstav fra 'a'
til 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Resultatet i variabelen vil bli som følger:
'! ! xmx x@x'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
mellom x-ene hvilken som helst bokstav fra 'A'
til 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Resultatet i variabelen vil bli som følger:
'xax ! xcx x@x'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
mellom x-ene hvilket som helst tall fra 0 til 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Resultatet i variabelen vil bli som følger:
'xax ! ! ! x@x'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
mellom x-ene hvilket som helst tall fra 3 til 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Resultatet i variabelen vil bli som følger:
'xax x1x ! ! x@x'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
mellom x-ene hvilken som helst bokstav fra 'a'
til 'z' eller tall fra 1 til 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Resultatet i variabelen vil bli som følger:
'! ! ! ! x@x'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
mellom x-ene hvilken som helst bokstav fra 'a'
til 'z' eller bokstav fra 'A' til
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Resultatet i variabelen vil bli som følger:
'! ! ! x5x x@x'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
mellom x-ene hvilken som helst bokstav fra 'a'
til 'z' eller tallene 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Resultatet i variabelen vil bli som følger:
'! ! ! ! x3x'
Eksempel
I dette eksemplet ser søkemønsteret slik ut:
mellom x-ene bokstaver fra 'a' til 'z'
i antall fra 1 og mer:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Resultatet i variabelen vil bli som følger:
'xx ! ! ! x123x xa3x'
Eksempel
La oss gjøre det slik at antall bokstaver kan være null:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Resultatet i variabelen vil bli som følger:
'! ! ! x123x xa3x'
Praktiske oppgaver
Gitt en streng:
<?php
$str = 'aba aea aca aza axa';
?>
Skriv et regulært uttrykk som finner etter følgende
mønster: på kantene står bokstaven 'a',
og mellom dem - bokstaven 'b', 'e'
eller 'x'.
Gitt en streng:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Skriv et regulært uttrykk som finner etter følgende
mønster: på kantene står bokstaven 'a',
og mellom dem - et tall fra 3-er til 6-er.
Gitt en streng:
<?php
$str = 'aba aea afa aha aga';
?>
Skriv et regulært uttrykk som finner etter følgende
mønster: på kantene står bokstaven 'a',
og mellom dem - en bokstav fra a til g.
Gitt en streng:
<?php
$str = 'aba aea afa aha aga';
?>
Skriv et regulært uttrykk som finner etter følgende
mønster: på kantene står bokstaven 'a',
og mellom dem - en bokstav fra a til f og fra j til z.
Gitt en streng:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Skriv et regulært uttrykk som finner etter følgende
mønster: på kantene står bokstaven 'a',
og mellom dem - en bokstav fra a til f og fra A til D.
Gitt en streng:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Skriv et regulært uttrykk som finner etter følgende
mønster: på kantene står bokstaven 'a',
og mellom dem - små latinske bokstaver,
uten å berøre de andre.
Gitt en streng:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Skriv et regulært uttrykk som finner etter følgende
mønster: på kantene står bokstaven 'a',
og mellom dem - små og store latinske
bokstaver, uten å berøre de andre.
Gitt en streng:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Skriv et regulært uttrykk som finner etter følgende
mønster: på kantene står bokstaven 'a',
og mellom dem - små latinske bokstaver
og tall, uten å berøre de andre.