Java: Hằng chuỗ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

Mẫu kiểm tra tương thích cơ bản nhất được biểu thức chính quy hỗ trợ là là hằng chuỗi (String Literal). Ví dụ, nếu biểu thức chính quy là foo và dữ liệu nhập vào là foo thì đương nhiên có sự khớp nhau, và ta có thể kiểm tra đầu ra này:

Nhập vào biểu thức chính quy: foo
Nhập vào chuỗi tìm kiếm: foo
foo bắt đầu từ chỉ số 0 và kết thúc ở chỉ số 3.

Sự trùng khớp này đương nhiên là thành công. Có điểm lưu ý là chuỗi đầu vào chỉ có 3 ký tự, nhưng chỉ số tìm thấy lại bắt đầu từ 0 và kết thúc ở chỉ số 3. Theo quy ước thì phạm vi sẽ bao gồm chỉ số bắt đầu và chỉ số kết thúc như thể hiện ở hình sau:


Hằng chuỗi "foo" với các ô được đánh số và chỉ mục

Mỗi ký tự trong chuỗi được thể hiện trong một ô, trong đó có kèm thêm về chỉ số được đánh giữa các ô. Chuỗi "foo" bắt đầu từ chỉ số 0 và kết thúc ở chỉ số 3 mặc dù các ký tự chỉ được đánh chỉ số theo vị trí 0, 1 và 2.

Với những tương thích kế tiếp, ta sẽ nhận thấy một vài sự lộn xộn; chỉ số đầu tiên của sự tương thích tiếp theo sẽ tương tự với chỉ số cuối cùng của sự tương thích trước đó:

Nhập vào biểu thức chính quy: foo
Nhập vào chuỗi cần tìm kiếm: foofoofoo
foo bắt đầu từ chỉ số 0 và kết thúc ở chỉ số 3.
foo bắt đầu từ chỉ số 3 và kết thúc ở chỉ số 6.
foo bắt đầu từ chỉ số 6 và kết thúc ở chỉ số 9.

Siêu ký tự

API này cũng hỗ trợ một số ký tự đặc biệt để phục vụ cho việc tạo mẫu kiểm tra tương thích. Giả sử biểu thức chính quy là cat. và nhập vào chuỗi là cats. thì kết quả sẽ như sau:

Nhập vào regex: cat.
Nhập vào chuỗi tìm kiếm: cats
cats bắt đầu từ chỉ số 0 và kết thúc ở chỉ số 4.

Ở ví dụ trên bạn thấy rằng vẫn có sự tương thích mặc dù biểu thức chính quy chứa dấu chấm "." mà không phải ký tự s, nguyên nhân là bởi vì ký hiệu dấu chấm là một siêu ký tự (metacharacter), nó được trình thông dịch hiểu là ký tự đặc biệt của bộ tương thích, cụ thể ký hiệu dấu chấm tương ứng với một ký tự bất kỳ.

Các siêu ký tự được API này hỗ trợ gồm: <([{\^-=$!|]})?*+.>


Lưu ý: Trong một vài tính huống nào đó thì các ký tự đặc biệt được liệt kê ở trên không được coi là siêu ký tự. Bạn sẽ gặp phải điều này khi bạn tìm hiểu thêm về cách xây dựng biểu thức chính quy. Tuy nhiên, bạn hãy nhớ tất cả các ký tự trên để tiện sử dụng vì chỉ những ký tự đó mới là những siêu ký tự.

Có hai cách để kiểm tra xem một siêu ký tự nào đó có được đối xử như là ký tự thông thường hay không:

  • đặt trước siêu ký tự một dấu xổ trái (\)
  • Đặt siêu ký tự trong cặp \Q và \E.

Khi sử dụng các cách trên thì \Q và \E có thể được đặt ở bất kỳ vị trí nào trong biểu thức, miễn sao \Q phải được đặt trước.

» Tiếp: Lớp Character
« Trước: Kiểm tra dữ liệu (Test Harness)
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 !!!