PHP тіліндегі регулярды өрнектердегі 'немесе' командасы
Бұл сабақта біз
| командасын қарастырамыз, бұл команда
[] командасымен салыстырғанда қуаттырақ
НЕМЕСЕ нұсқасын ұсынады. Бұл команда
регулярды өрнекті бірнеше бөлікке бөлуге мүмкіндік береді.
Сонымен бірге ізделетін нәрсе не бір
бөлік регулярды өрнекке, не екінші бір бөлігіне сәйкес келуі мүмкін. Мысалдармен қарастырайық.
Мысал
Бұл мысалда іздеу шаблоны мынадай: үш
'a' әрпі немесе үш 'b' әрпі:
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Нәтижесінде айнымалыға мыналар жазылады:
'! ! abb'
Мысал
Бұл мысалда іздеу шаблоны мынадай: үш
'a' әрпі немесе 1 не одан да көп
'b' әрпі:
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Нәтижесінде айнымалыға мыналар жазылады:
'! ! ! ! axx'
Мысал
Бұл мысалда іздеу шаблоны мынадай: бір не одан да көп әріп немесе үш сан:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Нәтижесінде айнымалыға мыналар жазылады:
'! ! ! 1 12 !'
Мысал
Тік сызық регулярды өрнекті екі емес, кез келген саң бөлікке бөлуге болады:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Нәтижесінде айнымалыға мыналар жазылады:
'! ! ! ddd'
Мысал
Егер тік сызық дөңгелек жақша ішінде тұрса,
'немесе' тек сол жақшалар ішінде ғана жұмыс істейді. Мысал ретінде мына іздеу шаблоны бойынша жолдарды табайық: басында
'a', немесе 'b' бір не одан да көп рет
тұрады, содан кейін екі 'x' әрпі тұрады:
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Нәтижесінде айнымалыға мыналар жазылады:
'! ! ! exx'
Практикалық тапсырмалар
Мына жол берілген:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Мына шаблон бойынша жолдарды табатын регулярды өрнек жазыңыз: шеттерінде 'a' әрпі,
ал олардың арасында - не 'e' әрпі кез келген
санда немесе 'x' әрпі кез келген
санда.
Мына жол берілген:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Мына шаблон бойынша жолдарды табатын регулярды өрнек жазыңыз: шеттерінде 'a' әрпі,
ал олардың арасында - не 'e' әрпі екі рет
немесе 'x' әрпі кез келген санда.