วงเล็บจัดกลุ่มใน Regular Expressions ของ PHP
ในตัวอย่างก่อนหน้านี้ ตัวดำเนินการทำซ้ำ จะกระทำต่ออักขระเพียงตัวเดียวที่อยู่ ตรงหน้าพวกมันเท่านั้น เราควรทำอย่างไร ถ้าเราต้องการให้พวกมันกระทำต่ออักขระหลายตัว?
สำหรับสิ่งนี้ มีวงเล็บจัดกลุ่ม
'(' และ ')' พวกมันทำงานดังนี้:
หากมีบางสิ่งอยู่ในวงเล็บจัดกลุ่ม
และมีตัวดำเนินการทำซ้ำอยู่หลัง ')' ทันที
- มันจะกระทำต่อทุกสิ่งที่อยู่ภายในวงเล็บ
ในตัวอย่างถัดไป แพทเทิร์นการค้นหาดู
ดังนี้: ตัวอักษร 'x' ตามด้วยสตริง 'ab'
หนึ่งครั้งหรือมากกว่า จากนั้นตัวอักษร 'x':
<?php
$str = 'xabx xababx xaabbx';
$res = preg_replace('#x(ab)+x#', '!', $str);
?>
ผลลัพธ์ที่ได้ในตัวแปรจะเป็นดังนี้:
'! ! xaabbx'
กำหนดสตริง:
<?php
$str = 'ab abab abab abababab abea';
?>
เขียน Regular Expression ที่จะค้นหาสตริง
ตามแพทเทิร์น: สตริง 'ab' ทำซ้ำ
1 ครั้งหรือมากกว่า