Kommandot 'eller' i reguljära uttryck i PHP

I den här lektionen kommer vi att analysera kommandot |, som representerar en mer kraftfull variant av ELLER jämfört med kommandot []. Detta kommando tillåter oss att dela upp det reguljära uttrycket i flera delar. Sökningen kan antingen matcha en del av det reguljära uttrycket eller en annan. Låt oss titta på exempel.

Exempel

I detta exempel är sökmönstret: tre bokstäver 'a' eller tre bokstäver 'b':

php<?php
  $str = 'aaa bbb abb';
  $res = preg_replace('#a{3}|b{3}#', '!', $str);
?>

Som ett resultat kommer följande att skrivas till variabeln:

php'! ! abb'

Exempel

I detta exempel är sökmönstret: tre bokstäver 'a' eller från 1 och fler bokstäver 'b':

php<?php
  $str = 'aaa bbb bbbb bbbbb axx';
  $res = preg_replace('#a{3}|b+#', '!', $str);
?>

Som ett resultat kommer följande att skrivas till variabeln:

php'! ! ! ! axx'

Exempel

I detta exempel är sökmönstret: en eller flera bokstäver eller tre siffror:

php<?php
  $str = 'a ab abc 1 12 123';
  $res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>

Som ett resultat kommer följande att skrivas till variabeln:

php'! ! ! 1 12 !'

Exempel

Det vertikala strecket kan dela upp det reguljära uttrycket i inte bara två delar, utan i valfritt antal delar:

php<?php
  $str = 'aaa bbb ccc ddd';
  $res = preg_replace('#a+|b+|c+#', '!', $str);
?>

Som ett resultat kommer följande att skrivas till variabeln:

php'! ! ! ddd'

Exempel

Om det vertikala strecket står inom runda parenteser, så fungerar 'eller' endast inom dessa parenteser. Låt oss som ett exempel hitta strängar med följande mönster: i början står antingen 'a', eller 'b' en eller flera gånger, och sedan två bokstäver 'x':

php<?php
  $str = 'axx bxx bbxx exx';
  $res = preg_replace('#(a|b+)xx#', '!', $str);
?>

Som ett resultat kommer följande att skrivas till variabeln:

php'! ! ! exx'

Praktiska uppgifter

Задание 1

Given en sträng:

php<?php
  $str = 'aeeea aeea aea axa axxa axxxa';
?>

Skriv ett reguljärt uttryck som hittar strängar enligt mönstret: vid kanterna står bokstäverna 'a', och mellan dem - antingen bokstaven 'e' valfritt antal gånger eller bokstaven 'x' valfritt antal gånger.

Задание 2

Given en sträng:

php<?php
  $str = 'aeeea aeea aea axa axxa axxxa';
?>

Skriv ett reguljärt uttryck som hittar strängar enligt mönstret: vid kanterna står bokstäverna 'a', och mellan dem - antingen bokstaven 'e' två gånger eller bokstaven 'x' valfritt antal gånger.