⊗ppPmRgNPB 252 of 447 menu

Dấu ngoặc không lưu giữ trong regex PHP

Dấu ngoặc () thực hiện hai chức năng - nhóm các ký tự và chức năng bắt nhóm. Vậy phải làm gì nếu chúng ta cần nhóm, nhưng không muốn bắt vào nhóm? Để giải quyết vấn đề này, người ta đã tạo ra dấu ngoặc không lưu giữ (?: ) - chúng nhóm, nhưng không bắt vào nhóm.

Ví dụ

Trong ví dụ sau, cặp ngoặc đầu tiên chúng ta cần để nhóm, còn cặp thứ hai - để bắt nhóm. Tuy nhiên, cả hai cặp ngoặc đều lưu dữ liệu vào nhóm:

<?php $str = 'abab123'; $reg = '#(ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

Kết quả trong các nhóm của chúng ta sẽ như sau:

<?php var_dump($res[0]); // sẽ hiển thị 'abab123' var_dump($res[1]); // sẽ hiển thị 'ab' var_dump($res[2]); // sẽ hiển thị '123' ?>

Ví dụ

Hãy làm sao để cặp ngoặc đầu tiên chỉ nhóm, nhưng không bắt vào nhóm:

<?php $str = 'abab123'; $reg = '#(?:ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

Kết quả trong nhóm đầu tiên sẽ là số của chúng ta:

<?php var_dump($res[1]); // sẽ hiển thị '123' ?>

Bài tập thực hành

Cho các chuỗi con, được chia thành hai phần bởi một số lượng tùy ý các cặp $@:

<?php $str = 'aaa$@bbb aaa$@$@bbb aaa$@$@$@bbb'; ?>

Hãy tìm mỗi chuỗi con như vậy và với mỗi chuỗi con tìm được, hãy đặt vào nhóm thứ nhất phần đứng trước dấu phân cách, còn vào nhóm thứ hai - phần đứng sau dấu phân cách.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối