Biểu thức chính quy trong java
Java Regex hoặc Regular Expression (biểu thức chủ yếu quy) là 1 trong những API để khái niệm một mẫu mã để tra cứu kiếm hoặc thao tác với chuỗi. Nó được sử dụng thoáng rộng để khẳng định ràng buộc trên các chuỗi như bảo đảm mật khẩu, email, kiểu dữ liệu datetime, ...
Bạn đang xem: Biểu thức chính quy trong java

Gói java.util.regex
Java Regex API cung cấp 1 interface với 3 phần bên trong gói java.util.regex.
Lớp Matcher với Pattern trong java cung ứng cơ sở của biểu thức bao gồm quy. Gói java.util.regex cung ứng các lớp và hình ảnh sau cho các biểu thức thiết yếu quy.
Interface MatchResult Lớp Matcher Lớp Pattern Lớp PatternSyntaxExceptionLớp Matcher
Nó implements interface MatchResult, cung cấp bộ máy xử lý biểu thức chính quy để thao tác làm việc với chuỗi ký kết tự.
1 | boolean matches() | kiểm tra xem biểu thức chính quy tất cả khớp với mẫu hay không. |
2 | boolean find() | tìm biểu thức tiếp theo khớp cùng với mẫu. |
3 | boolean find(int start) | tìm biểu thức tiếp sau khớp với mẫu mã từ số bước đầu đã cho. |
4 | String group() | trả về chuỗi nhỏ phù hợp. |
5 | int start() | trả về vị trí ban đầu của chuỗi bé phù hợp. |
6 | int end() | trả về vị trí hoàn thành của chuỗi nhỏ phù hợp. |
7 | int groupCount() | trả về tổng số các chuỗi nhỏ phù hợp. |
Lớp Pattern
Đây là phiên bản được biên dịch của một biểu thức chính quy. Nó được thực hiện để xác định một chủng loại cho bộ máy regex.
1 | static Pattern compile(String regex) | biên dịch regex đã mang lại và trả về thể hiện của Pattern. Xem thêm: Sử Dụng " On Top Of That Là Gì ? Sử Dụng On Top Of That Như Thế Nào |
2 | Matcher matcher(CharSequence input) | tạo một matcher khớp với nguồn vào đã cho với mẫu. |
3 | static boolean matches(String regex, CharSequence input) | Nó biên dịch biểu thức bao gồm quy và tìm kiếm những chuỗi bé từ chuỗi input tương xứng với mẫu regex. |
4 | String<> split(CharSequence input) | chia chuỗi input đã mang đến thành mảng các kết quả trùng khớp với chủng loại đã cho. |
5 | String pattern() | trả về mẫu regex. |
Ví dụ thực hiện Regex trong Java
1. Ví dụ thực hiện Regex trong Java - kiếm tìm kiếm chuỗi con
lấy ví dụ như sau tìm toàn bộ các chuỗi ngày tháng tất cả định dạng dd-mm-yyyy hoặc dd/mm/yyyy trong chuỗi văn bạn dạng text1 với xác minh xem chuỗi text2 cùng text3 tất cả định dạng ngày tháng tốt không.
Định nghĩa regex:
d1,2: nghĩa là một số có một hoặc 2 chữ số (ngày với tháng).<-|/>: nghĩa là ký tự - hoặc /.d4: nghãi là một trong những có 4 chữ số (năm).
File: RegexExample1.java
- bắt đầu bằng chữ cái. - Chỉ đựng chữ cái, chữ số cùng dấu gạch ốp ngang (-). - chứa một ký tự
là tên gọi miền. - thương hiệu miền hoàn toàn có thể là domain.xxx.yyy hoặc domain.xxx. Trong số ấy xxx với yyy là các chữ mẫu và có độ dài từ 2 trở lên.
Định nghĩa regex:
^
(<\w>+\.<\w>+|<\w>+\.<\w>2,\.
Xem thêm: Di Tim Nguoi Hat Ly Thuong Nhau, Đi Tìm Câu Hát Lý Thương Nhau Loi Bai Hat
<\w>2,)$
File: RegexExample2.java
package vn.thietkewebshop.vn;import java.util.regex.Pattern;public class RegexExample2 public static void main(String<> args) String EMAIL_PATTERN = "^
gmail"; System.out.println(email1 + ": " + Pattern.matches(EMAIL_PATTERN, email1)); System.out.println(email2 + ": " + Pattern.matches(EMAIL_PATTERN, email2)); System.out.println(email3 + ": " + Pattern.matches(EMAIL_PATTERN, email3)); System.out.println(email4 + ": " + Pattern.matches(EMAIL_PATTERN, email4)); System.out.println(email5 + ": " + Pattern.matches(EMAIL_PATTERN, email5)); System.out.println(email6 + ": " + Pattern.matches(EMAIL_PATTERN, email6)); System.out.println(email7 + ": " + Pattern.matches(EMAIL_PATTERN, email7)); test Regex Online
chúng ta cũng có thể test regex online bằng cách sử dụng website https://regex101.com/
Ví dụ: tìm toàn bộ các chuỗi ngày tháng có định dạng dd-mm-yyyy hoặc dd/mm/yyyy vào chuỗi văn bản. Ta sử dụng regex = "d1,2<-|/>d1,2<-|/>d4"

Cú pháp của biểu thức bao gồm quy sẽ được giải thích bên dưới.
Cú pháp Regex trong Java
Với các cú pháp và ví dụ sau bạn có thể kiểm tra kết quả bằng cách sử dụng website https://regex101.com/
1. Các lớp cam kết tự Regex
<...> | trả về một ký tự phù hợp |
a, b, hoặc c | |
<^abc> | Bất kỳ ký tự nào kế bên a, b, hoặc c |
a tới z hoặc A tới Z | |
a cho tới d, hoặc m tới p: | |
d, e, hoặc f | |
a tới z, không tính b cùng c: | |
a cho tới z, bên cạnh m cho tới p: | |
<0-9> | 0 cho tới 9 |
Ví dụ:
2. Số lượng ký tự trong Regex
con số trong Regex chỉ định số lượng xảy ra của một ký tự.X? | X xẩy ra một hoặc ko lần | hellos? | hello, hellos, helloss |
X+ | X xẩy ra một hoặc nhiều lần | Version w-w+ | Version A-b1_1 |
X* | X xẩy ra không hoặc những lần | A*B*C* | AAACC |
Xn | X chỉ xảy ra n lần | d4 | 2018, 20189, 201 |
Xn, | X xảy ra n hoặc nhiều lần | d4, | 2018, 20189, 201 |
Xy,z | X xẩy ra ít tốt nhất y lần nhưng nhỏ hơn z lần | d2,3 | 2018, 201 |
3. Ký kết tự đặc biệt quan trọng trong Regex
Bảng sau dây liệt kê một số ký tự đặc biệt quan trọng trong regex.
. | Bất kỳ ký kết tự nào |
^ | Có 2 bí quyết sử dụng. 1. Đánh dấu ban đầu của một dòng, một chuỗi. 2. Nếuu sử dụng trong dấu <...> thì nó tức là phủ định. |
$ | Đánh dấu kết thúc của một dòng |
d | Bất kỳ chữ số nào, viết tắt của <0-9> |
D | Bất kỳ ký tự nào chưa phải chữ số, viết tắt của <^0-9> |
s | Bất kỳ ký kết tự trống nào (như vết cách, tab, xuống dòng, ...), viết tắt của < x0Bf > |
S | Bất kỳ ký kết tự trống nào không hẳn ký tự trống, viết tắt của <^s> |
w | Bất kỳ ký kết tự chữ làm sao (chữ cái và chữ số), viết tắt của |
W | Bất kỳ ký tự nào chưa hẳn chữ loại và chữ số, viết tắt của <^w> |
Ranh giới của một từ | |
B | Không đề xuất ranh giới của một từ |
4. Cam kết tự ngắn gọn xúc tích trong Regex
Bảng sau liệt kê một trong những ký tự xúc tích trong Regex:
| | Hoặc | 22|33 | 33 |
( … ) | Group những ký tự với chụp lại | A(nt|pple) | Ant, Apple |
1 | Nội dung của group 1 | r(w)g1x | regex |
2 | Nội dung của tập thể nhóm 2 | (dd)+(dd)=2+1 | 12+65=65+12 |
(?: … ) | Group ko được chụp lại, các bạn không thể sử dụng 1 | A(?:nt|pple) | Ant, Apple |
Recent Updates bài xích tập java bao gồm lời giảiSử dụng Javascript vào HTMLToán tử vệt 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Bài tập Java - sắp xếp nhanh (Quick Sort) vào JavaBài tập Java - bố trí chèn (Insertion Sort) vào JavaBài tập Java - thu xếp nổi bọt (Bubble Sort) trong JavaBài tập làm chủ sinh viên vào JavaHashSet vào javaHashMap trong javaLớp WindowAdapter vào Java SwingLớp MouseMotionAdapter vào Java Swing