Các toán tử lặp lại ký tự trong biểu thức chính quy
Có những tình huống chúng ta muốn chỉ định rằng
một ký tự lặp lại một số lần nhất định.
Nếu chúng ta biết chính xác số lần lặp lại,
thì có thể chỉ cần viết nó nhiều lần
- #aaaa#. Nhưng phải làm thế nào nếu chúng ta muốn
nói điều này: lặp lại một hoặc nhiều lần?
Để làm điều này, tồn tại các toán tử (bộ định lượng)
lặp lại: dấu cộng + (một hoặc nhiều lần),
dấu sao * (không hoặc nhiều lần) và
dấu hỏi ? (không hoặc một lần). Những
toán tử này tác động lên ký tự đứng trước chúng.
Hãy xem cách hoạt động của các toán tử này qua các ví dụ.
Ví dụ
Tìm tất cả các chuỗi con theo mẫu chữ cái
'x', chữ cái 'a' một hoặc nhiều lần,
chữ cái 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
Kết quả, biến sẽ ghi lại nội dung sau:
'xx ! ! ! xbx'
Ví dụ
Tìm tất cả các chuỗi con theo mẫu chữ cái
'x', chữ cái 'a' không hoặc nhiều lần,
chữ cái 'x':
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
Kết quả, biến sẽ ghi lại nội dung sau:
'! ! ! ! xbx'
Ví dụ
Tìm tất cả các chuỗi con theo mẫu chữ cái
'x', chữ cái 'a' không hoặc một lần,
chữ cái 'x':
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
Kết quả, biến sẽ ghi lại nội dung sau:
'! ! xaax xbx'
Bài tập thực hành
Cho chuỗi:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Viết biểu thức chính quy tìm các chuỗi
theo mẫu: chữ cái 'a', chữ cái 'b'
một hoặc nhiều lần, chữ cái 'a'.
Cho chuỗi:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Viết biểu thức chính quy tìm các chuỗi
theo mẫu: chữ cái 'a', chữ cái 'b'
không hoặc nhiều lần, chữ cái 'a'.
Cho chuỗi:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Viết biểu thức chính quy tìm các chuỗi
theo mẫu: chữ cái 'a', chữ cái 'b'
một lần hoặc không có, chữ cái 'a'.
Cho chuỗi:
<?php
$str = 'aa aba abba abbba abca abea';
?>
Viết biểu thức chính quy tìm các chuỗi
'aa', 'aba', 'abba',
'abbba', mà không bắt 'abca'
và 'abea'.