REGULAR EXPRESSION PHP
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

None Capturing Group trong Regular Expression

Chúng ta đã được học qua khái niệm Capturing Value trong bài các quy tắc Regular Expression căn bản thì trong bài này ta sẽ đến một khái niệm khác đó là None Capturing Group, đây là một khái niệm ngược lại với Capturing Value trong Regular Expression.

1. None Capturing Group là gì?

Như ta biết Capturing Value sẽ xác định giá trị trả về cho từng biểu thức RegEx con, nhưng đôi lúc ta lại muốn biểu thức con đó không xuất hiện trong kết quả trả về thì làm thế nào? Để giải quyết vấn đề này ta dùng None Capturing Group trong Regular Expression.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Cú pháp: /regex:?regex/ trong đó dấu :? chính là cú pháp khai báo None Capturing Group.

Để dễ hiểu hơn ta tìm hiểu một số ví dụ nhé (Code PHP).

Ví dụ: Lấy tất cả chuỗi trong dấu ngoặc kép lấy luôn dấu ngoặc kép)

preg_match('/"(?:.+)"/', 'program "Hello World"', $matches);

echo '<pre>';

print_r($matches);

echo '</pre>';

Chạy và kết quả là:

Array
(
    [0] => "Hello World"
)

Nếu bạn đã đọc qua phần Capturing Value và bài hàm preg_match trong php thì bạn sẽ thấy có sự bất thường ở đây. Lẽ ra phải trả về 2 kết quả vì ta có:

  • Pattern toàn bộ: /"(?:.+)"/
  • Pattern con: (?:.+)

Nhưng vì ta đã dùng None Capturing Group ở biểu thức RegEx con (?:.+) nên biểu thức con này không được liệt kê kết quả trả về.

Nếu ta không dùng None Capturing Group thì code sẽ như sau:

preg_match('/"(.+)"/', 'program "Hello World"', $matches);

echo '<pre>';

print_r($matches);

echo '</pre>';

Chạy kết quả là:

Array
(
    [0] => "Hello World"
    [1] => Hello World
)

Bạn so sánh 2 kết quả và tự suy nghĩ nhé :D.

Từ ví dụ trên ta có kết luận:

None Capturing Group là kỹ thuật không cho một đoạn Regex nào đó xuất hiện trong kết quả trả về

2. Một ví dụ None Capturing Group

Bây giờ mình sẽ làm một vài ví dụ để bạn dễ nắm bắt hơn.

Ví dụ 2: Cho chuỗi $subject = 'program (None capturing group "Welcome To You")', Hãy lấy nội dung chữ None capturing group trong chuỗi trên, kết quả trả về bỏ đi đoạn Welcome To You

preg_match('/\((.+)"(?:.+)"\)/', 'program (None capturing group "Welcome To You")', $matches);

echo '<pre>';

print_r($matches);

echo '</pre>';

Kết quả:

Array
(
    [0] => (None capturing group "Welcome To You")
    [1] => None capturing group 
)

Nếu bạn bỏ đi biểu thức None Capturing Group thì kết quả sẽ như sau:

preg_match('/\((.+)"(.+)"\)/', 'program (None capturing group "Welcome To You")', $matches);

echo '<pre>';

print_r($matches);

echo '</pre>';

Kết quả:

Array
(
    [0] => (None capturing group "Welcome To You")
    [1] => None capturing group 
    [2] => Welcome To You
)

3. Lời Kết

Phần None Capturing Group này thực ra cũng ít sử dụng, nhưng bạn cũng nên biết nó để xử lý nhuần nhuyễn RegEx hơn nhé. Bài tiếp theo mình nghiên cứu Lookbehind trong Regular Expression

Tổng hợp dữ liệu trong bài:

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top