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

Add a Comment

Scroll Up