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

Resultatet i variabelen vil bli som følger:

php'! ! ! x@x'

Eksempel

I dette eksemplet ser søkemønsteret slik ut: mellom x-ene hvilken som helst bokstav fra 'a' til 'k':

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

Resultatet i variabelen vil bli som følger:

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

Resultatet i variabelen vil bli som følger:

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

Resultatet i variabelen vil bli som følger:

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

Resultatet i variabelen vil bli som følger:

php'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<?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:

php'! ! ! ! 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<?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:

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

Resultatet i variabelen vil bli som følger:

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

Resultatet i variabelen vil bli som følger:

php'xx ! ! ! x123x xa3x'

Eksempel

La oss gjøre det slik at antall bokstaver kan være null:

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

Resultatet i variabelen vil bli som følger:

php'! ! ! x123x xa3x'

Praktiske oppgaver

Задание 1

Gitt en streng:

php<?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'.

Задание 2

Gitt en streng:

php<?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.

Задание 3

Gitt en streng:

php<?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.

Задание 4

Gitt en streng:

php<?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.

Задание 5

Gitt en streng:

php<?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.

Задание 6

Gitt en streng:

php<?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.

Задание 7

Gitt en streng:

php<?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.

Задание 8

Gitt en streng:

php<?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.