Regex trong Java - Tìm hiểu nhanh về biểu thức chính quy trong Java
20/04/2021 03:06
Trong những bài viết trước, chúng ta đã tìm hiểu về String trong Java và một số thao tác trên String. Trong bài viết này, chúng ta sẽ tìm hiểu về Regex trong Java - hay còn gọi là biểu thức chính quy trong Java được sử dụng để xác định các mẫu tìm kiếm trong một chuỗi.
Mục lục
Tìm hiểu về Regex trong Java
Khái niệm Regex trong Java
Regex( Regular Expressions) - biểu thức chính quy là một nhóm các ký tự giúp khớp các mẫu trong một Chuỗi hoặc một tập hợp các Chuỗi, sử dụng cú pháp cụ thể của một mẫu. Java cung cấp Regex hữu ích để xác định các mẫu trong Chuỗi, điều này có thể hữu ích trong việc thực hiện các hoạt động khác nhau trên Chuỗi / văn bản như tìm kiếm, xử lý, chỉnh sửa, đối sánh mẫu, thao tác, xác thực email và mật khẩu,....
Biểu thức chính quy không dành riêng cho ngôn ngữ lập trình nhưng chúng hơi khác nhau đối với mỗi ngôn ngữ. Biểu thức chính quy trong ngôn ngữ Java và Perl gần như tương tự nhau và rất dễ học.
Gói java.util.regex cung cấp ba lớp và một giao diện để áp dụng các biểu thức chính quy
Ví dụ regex trong Java
Metacharacter trong Regex Java
Metacharacter |
Mô tả |
. |
So khớp với bất kỳ ký tự đơn nào |
\d |
Bất kỳ ký tự chữ số nào [0-9] |
\D |
Bất kỳ ký tự không phải chữ số viết tắt của [^0-9] |
\s |
Bất kỳ ký tự trống nào - [\t\n\f\r\xoB] |
\S |
Bất kỳ ký tự không phải ký tự trống nào - [^\s] |
\w |
Bất kỳ ký tự chữ nào - [a-zA-Z_0-9] |
\W |
Bất kỳ ký tự nào không phải chữ cái và chữ số, viết tắt của [^\w] |
\b |
Ranh giới của một từ |
\B |
Không phải là ranh giới của một từ |
Ba lớp Regex trong Java
Lớp |
Mô tả |
util.regex.Pattern |
Được sử dụng để tạo hoặc xác định các mẫu / biểu thức chính quy |
util.regex.Matcher |
Được sử dụng để diễn giải mẫu và thực hiện các phép toán so khớp với một chuỗi đầu vào |
util.regex.PatternSyntaxException |
Được sử dụng để ném một ngoại lệ nếu cú pháp của một biểu thức chính quy không chính xác. |
Và một giao diện là:
Giao diện |
Mô tả |
MatchResult interface |
Được sử dụng để tìm kết quả của một phép toán so khớp cho một biểu thức chính quy |
>>> Đọc thêm: Package trong Java - Giải mã các thông tin về Package trong Java
Lớp trong Regex trong Java
1, Lớp java.util.Pattern
Lớp Pattern được sử dụng để xác định hoặc tạo các biểu thức hoặc mẫu thông thường. Lớp này là một đại diện đã biên dịch của các biểu thức chính quy có thể được sử dụng để xác định các loại mẫu khác nhau. Không có hàm tạo công khai (constructor public) nào trong lớp Pattern. Chúng ta có thể sử dụng phương thức public static compile () của lớp này bằng cách chuyển biểu thức chính quy làm đối số sẽ tạo đối tượng mẫu sau khi thực thi.
Phương thức của lớp Pattern
1.1. static Pattern compile(String regex): Biên dịch regex đã cho và trả về thể hiện của Pattern.
1.2. static Pattern compile(String regex, int flags): Phương thức này tương tự như phương thức trên nhưng nhận thêm một đối số gọi là flag và được sử dụng để biên dịch biểu thức chính quy đã cho thành một mẫu với các cờ đã cho
1.3. int flags(): Phương thức này không có tham số và trả về các flag so khớp của một mẫu.
1.4. Matcher matcher(CharSequence input): Tạo một matcher khớp với đầu vào đã cho với mẫu.
1.5. static boolean matches(String regex, CharSequence input): Biên dịch biểu thức chính quy và tìm kiếm các chuỗi con từ chuỗi input phù hợp với mẫu regex.
1.6. String pattern(): trả về mẫu regex.
1.7. static String quote(String s): Nó được sử dụng để trả về một Chuỗi mẫu chữ cho Chuỗi đầu vào / đã nêu.
1.8. String[ ] split(CharSequence input): Nó chia chuỗi đầu vào đã cho xung quanh các kết quả phù hợp của mẫu này.
1.9. String[ ] split(CharSequence input, int limit): Nó được sử dụng để tách chuỗi đầu vào được chỉ định xung quanh các kết quả phù hợp của mẫu này trong một giới hạn nhất định
1.10. String toString(): Nó được sử dụng để trả về mẫu trong biểu diễn chuỗi.
>>> Đọc thêm: Số trong Java - Tìm hiểu về số và ví dụ trong Java
2. Lớp java.util.Matcher
Đối tượng của lớp Matcher là một công cụ được sử dụng để thực hiện các phép toán so khớp của một biểu thức chính quy đã cho với một chuỗi đầu vào nhiều lần.. Giống như lớp Pattern, Matcher cũng không có hàm tạo công khai. Bạn có thể lấy một đối tượng của lớp Matcher từ bất kỳ đối tượng nào của lớp Pattern bằng cách gọi phương thức matcher ().
Phương thức của lớp Pattern:
2.1. int start():
Nó được sử dụng để lấy chỉ mục bắt đầu của ký tự cuối cùng được so khớp bằng cách sử dụng phương thức find ().
2.2. int end ():
Nó được sử dụng để lấy chỉ mục cuối của ký tự cuối cùng được so khớp bằng phương thức find ().
2.3. boolean find ():
Nó được sử dụng để tìm nhiều lần xuất hiện của chuỗi đầu vào khớp với mẫu.
2.4. boolean find (int start):
Nó cố gắng tìm các lần xuất hiện của chuỗi đầu vào phù hợp với mẫu, bắt đầu từ chỉ mục được chỉ định.
2.5. String group():
Phương thức này trả về dãy con đầu vào được so khớp với trận trước.
2.6. int groupCount ():
Nó được sử dụng để trả về tổng số dãy con được so khớp trong mẫu của trình so khớp này.
2.7. boolean matches():
Nó cố gắng khớp toàn bộ văn bản với mẫu.
2.8. String replaceFirst(Thay thế chuỗi):
Thay thế chuỗi con đầu tiên của chuỗi đầu vào khớp với mẫu bằng chuỗi thay thế đã chỉ định.
2.9. String ReplaceAll (Thay thế chuỗi):
Thay thế mọi chuỗi con của chuỗi đầu vào khớp với mẫu bằng chuỗi thay thế được chỉ định.
>>> Tham khảo: Khóa học lập trình Java
3. java.util.PatternSyntaxException class
Lớp này ném một ngoại lệ không được chọn để chỉ ra lỗi cú pháp trong mẫu biểu thức chính quy.
Phương thức của lớp mẫu
3.1. String getDescription():
Nó được sử dụng để lấy mô tả về lỗi.
3.2 int getIndex ():
Nó được sử dụng để lấy chỉ mục của lỗi.
3.3 String getMessage():
Phương thức này cung cấp một chuỗi nhiều dòng, mô tả lỗi cú pháp cùng với chỉ mục của nó. Nó cũng cung cấp cho mẫu biểu thức chính quy bị lỗi và chỉ ra chỉ mục hoặc lỗi trong mẫu.
3.4 String getPattern():
Nó được sử dụng để lấy mẫu biểu thức chính quy bị lỗi.
Kết luận: Regex trong Java rất hữu ích trong việc thao tác và so khớp các mẫu với một Chuỗi. Nó giúp xác nhận và kiểm tra mật khẩu. Trong bài viết này, chúng ta có thể thấy các biểu thức chính quy hỗ trợ đối sánh mẫu và thực hiện nhiều thao tác trên Chuỗi.
Bài viết này chắc chắn sẽ giúp bạn hiểu rõ hơn về Biểu thức chính quy trong Java. Tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình tại Viện công nghệ thông tin T3H bạn nhé!
Nguồn tham khảo: techvidvan.com