Dấu ngoặc nhóm trong biểu thức chính quy PHP
Trong các ví dụ trước, các toán tử lặp lại chỉ tác động lên một ký tự duy nhất đứng trước chúng. Phải làm gì nếu chúng ta muốn chúng tác động lên nhiều ký tự?
Để làm điều này, có các dấu ngoặc nhóm
'(' và ')'. Chúng hoạt động như sau:
nếu có gì đó nằm trong dấu ngoặc nhóm
và ngay sau ')' là một toán tử lặp lại
- nó sẽ tác động lên tất cả những gì nằm trong ngoặc.
Trong ví dụ tiếp đây, mẫu tìm kiếm trông
như thế này: chữ cái 'x', tiếp theo là chuỗi 'ab'
một lần hoặc nhiều lần, sau đó là chữ cái 'x':
<?php
$str = 'xabx xababx xaabbx';
$res = preg_replace('#x(ab)+x#', '!', $str);
?>
Kết quả, biến sẽ được ghi giá trị sau:
'! ! xaabbx'
Cho một chuỗi:
<?php
$str = 'ab abab abab abababab abea';
?>
Hãy viết biểu thức chính quy tìm các chuỗi
theo mẫu: chuỗi 'ab' lặp lại
1 lần hoặc nhiều hơn.