Java: So khớp ranh giới

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Cho đến nay ta chỉ quan tâm đến việc liệu có tìm thấy kết quả khớp tại một số vị trí trong một chuỗi đầu vào cụ thể hay không. Chúng ta chưa quan tâm đến việc so khớp đang diễn ra ở đâu.

Ta có thể làm cho các đối sánh mẫu của mình chính xác hơn bằng cách chỉ định thông tin như vậy với các trình đối sánh ranh giới. Ví dụ: có thể bạn quan tâm đến việc tìm một từ cụ thể, nhưng chỉ khi nó xuất hiện ở đầu hoặc cuối dòng. Hoặc có thể bạn muốn biết liệu so khớp đang diễn ra trên một ranh giới từ hay vào cuối lần so khớp trước.

Bảng sau liệt kê và giải thích tất cả các đối sánh ranh giới.

Câu trúc ranh giới Mô tả
^ Bắt đầu dòng
$ Kết thúc dòng
\b Một ranh giới từ
\B Không phải một ranh giới từ
\A Bắt đầu của input
\G Phía cuối của sự tương thích trước
\Z Phần cuối của đầu vào nhưng đối với phần tử cuối cùng, nếu có
\z Kết thúc của input

Các ví dụ sau demo cách sử dụng đối sánh ranh giới ^$.

Enter your regex: ^dog$
Enter input string to search: dog
I found the text "dog" starting at index 0 and ending at index 3.

Enter your regex: ^dog$
Enter input string to search:       dog
No match found.

Enter your regex: \s*dog$
Enter input string to search:             dog
I found the text "            dog" starting at index 0 and ending at index 15.

Enter your regex: ^dog\w*
Enter input string to search: dogblahblah
I found the text "dogblahblah" starting at index 0 and ending at index 11.

Ví dụ đầu tiên của các ví dụ trên là tương thích vì mẫu trùng khớp với toàn bộ chuỗi nhập vào. Ví dụ thứ hai không tương thích vì chuỗi nhập vào có khoảng trắng ở đầu. Ví dụ thứ 3 chỉ định một biểu thức cho phép không giới hạn dấu cách trắng ở đầu, nhưng kết thúc phải là "dog". Ví dụ thứ 4 yêu cầu bắt đầu phải là "dog" và phía sau là một chuỗi không giới hạn các ký tự (\w).

Để kiểm tra xem mẫu có bắt đầu hay kết thúc là ký tự ranh giới hay không (ngược với chuỗi con trong chuỗi lớn hơn) thì ta sử dụng \b; ví dụ như \bdog\b

Enter your regex: \bdog\b
Enter input string to search: The dog plays in the yard.
I found the text "dog" starting at index 4 and ending at index 7.

Enter your regex: \bdog\b
Enter input string to search: The doggie plays in the yard.
No match found.

Để tương thích biểu thức trên các ký tự không phải là ranh giới thì ta sử dụng \B thay thế:

Enter your regex: \bdog\B
Enter input string to search: The dog plays in the yard.
No match found.

Enter your regex: \bdog\B
Enter input string to search: The doggie plays in the yard.
I found the text "dog" starting at index 4 and ending at index 7.

Để yêu cầu sự tương thích chỉ xảy ra ở cuối sự tương thích trước thì ta sử dụng \G:

Enter your regex: dog 
Enter input string to search: dog dog
I found the text "dog" starting at index 0 and ending at index 3.
I found the text "dog" starting at index 4 and ending at index 7.

Enter your regex: \Gdog 
Enter input string to search: dog dog
I found the text "dog" starting at index 0 and ending at index 3.

Ở ví dụ thứ hai thì chỉ tìm thấy một sự tương thích bởi với "dog" thứ hai không bắt đầu ở cuối của sự tương thích thứ nhất.

» Tiếp: Các phương thức của lớp Pattern
« Trước: Nhóm thu thập
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!