Lệnh 'hoặc' trong biểu thức chính quy PHP
Trong bài học này chúng ta sẽ phân tích lệnh
|, đây là phiên bản
mạnh mẽ hơn của HOẶC so với
lệnh []. Lệnh này cho phép
chia biểu thức chính quy thành nhiều phần.
Khi đó, kết quả tìm được có thể khớp với phần này
của biểu thức chính quy, hoặc với phần khác. Hãy cùng
xem các ví dụ.
Ví dụ
Trong ví dụ này, mẫu tìm kiếm như sau: ba
chữ cái 'a' hoặc ba chữ cái 'b':
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
Kết quả, biến sẽ ghi lại như sau:
'! ! abb'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm như sau: ba
chữ cái 'a' hoặc từ 1 trở lên
chữ cái 'b':
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
Kết quả, biến sẽ ghi lại như sau:
'! ! ! ! axx'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm như sau: một hoặc nhiều chữ cái hoặc ba chữ số:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
Kết quả, biến sẽ ghi lại như sau:
'! ! ! 1 12 !'
Ví dụ
Dấu gạch dọc có thể chia biểu thức chính quy không chỉ thành hai phần, mà thành bất kỳ số lượng phần nào:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
Kết quả, biến sẽ ghi lại như sau:
'! ! ! ddd'
Ví dụ
Nếu dấu gạch dọc nằm trong dấu ngoặc tròn,
thì 'hoặc' chỉ hoạt động bên trong
những dấu ngoặc đó. Để ví dụ, hãy tìm các chuỗi
theo mẫu sau: ở đầu là
hoặc 'a', hoặc 'b' một hoặc nhiều
lần, sau đó là hai chữ cái 'x':
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
Kết quả, biến sẽ ghi lại như sau:
'! ! ! exx'
Bài tập thực hành
Cho chuỗi:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Viết biểu thức chính quy tìm các chuỗi
theo mẫu: hai bên là các chữ cái 'a',
và giữa chúng - hoặc chữ cái 'e' với số lần
bất kỳ hoặc chữ cái 'x' với số lần
bất kỳ.
Cho chuỗi:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
Viết biểu thức chính quy tìm các chuỗi
theo mẫu: hai bên là các chữ cái 'a',
và giữa chúng - hoặc chữ cái 'e' hai lần
hoặc chữ cái 'x' với số lần bất kỳ.