Dấu ngoặc nhọn trong biểu thức chính quy PHP
Các toán tử +, *, ? rất tốt,
tuy nhiên, chúng không thể chỉ định một số lần lặp lại cụ thể. Trong trường hợp này,
toán tử {} sẽ giúp bạn.
Nó hoạt động như sau: {5}
- lặp lại năm lần, {2,5} - lặp lại
từ hai đến năm lần (bao gồm cả hai), {2,}
- lặp lại hai lần trở lên.
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
chữ cái 'x', chữ cái 'a' một
hoặc hai lần, chữ cái 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Kết quả, biến sẽ ghi lại nội dung sau:
'xx ! ! xaaax'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
chữ cái 'x', chữ cái 'a' hai
lần trở lên, chữ cái 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Kết quả, biến sẽ ghi lại nội dung sau:
'xx xax ! !'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
chữ cái 'x', chữ cái 'a' ba
lần, chữ cái 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Kết quả, biến sẽ ghi lại nội dung sau:
'xx xax xaax !'
Ví dụ
Trong ví dụ này, mẫu tìm kiếm trông như thế này:
chữ cái 'a' mười lần:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Kết quả, biến sẽ ghi lại nội dung sau:
'aaa ! aaa'
Ví dụ
Trong ví dụ này, tác giả mã muốn một mẫu như vậy:
chữ cái 'x', chữ cái 'a' ba
lần trở xuống, chữ cái 'x',
nhưng, tiếc là điều này - {,3} - không
hoạt động. Cần chỉ định rõ ràng:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Kết quả, biến sẽ ghi lại nội dung sau:
'xx ! ! !'
Ví dụ
Số không cũng được phép:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Kết quả, biến sẽ ghi lại nội dung sau:
'! ! ! !'
Bài tập thực hành
Cho một chuỗi:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Viết biểu thức chính quy tìm các chuỗi
'abba', 'abbba', 'abbbba'
và chỉ chúng.
Cho một chuỗi:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Viết biểu thức chính quy tìm các chuỗi
dạng 'aba', trong đó 'b' xuất hiện
ít hơn ba lần (bao gồm).
Cho một chuỗi:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
Viết biểu thức chính quy tìm các chuỗi
dạng 'aba', trong đó 'b' xuất hiện
nhiều hơn bốn lần (bao gồm).