Regular Expression in Scala
Regular Expression
Regular Expression là các patterns được sử dụng để so sánh các tổ hợp ký tự trong chuỗi hay còn hay được gọi là Regex
Có thể phân loại thành 5 mục
- Assertions
- Character classes
- Groups and backreferences
- Quantifiers
- Unicode property escapes
Bài viết này sẽ nói về Assertions
Assertions
Assertions gồm các ranh giới cho biết phần bắt đầu và kết thúc của các dòng hay các từ…
Các kiểu trong Assertions
Boundary-type assertions
- ^: match với phần đầu của đầu vào
Ví dụ:
^A match với “A” trong “A Cat”
^A không match “A” trong “an Apple”
- $: match với phần kết thúc của đầu vào
Ví dụ
t$ không match với “t” trong “attack
t$ match với “t” trong “hit”
- \\b: khớp với biên là word-character (các kí tự tạo thành từ)
Ví dụ:
\\bC match với “C” trong “Cat”
\\ba không match với “a” trong “Cat” vì bị liền trước và theo sau bởi “C” và “t” là 2 word-character
at\\b match với “at” trong “Cat”
- \B: match với biên không phải là word-character
Ví dụ:
\\Ba match với “a” trong “A cat” vì “a” nằm giữa 2 word-character “c” và “t”
\\Bc không match với “c” trong “A cat” vì trước “c” là khoảng trống
t\\B không match với “t” trong “A cat” vì “t” là kết thúc chuỗi
Các kiểu khác
- x(?=y): match với x chỉ khi x được theo sau bởi y
Ví dụ: Nobi(?=Nobita) “Nobi” trong “NobiNobita” sẽ match vì được theo sau bởi “Nobita”
- x(?!y): match với xy khi x không được theo sau bởi y
Ví dụ:
\\d+(?!\\.) match với các số mà sau nó không phải là dấu thập phân => “3” không match vì sau nó có dấu “.” còn “141” match vì sau nó không có dấu “.”
- (?<=y)x: match với x chỉ khi x được liền trước bởi y
Ví dụ: (?<=Nobi)Nobita sẽ match với “Nobita” trong “NobiNobita” vì được liền trước bởi “Nobi”
- (?<!y)x: match với x khi x không liền trước bởi y
Ví dụ: (?<!-)\\d+ match với các số mà liền trước không phải “-” => “1” và “4” trong “-3.14” sẽ match do không có “-” ở trước