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 PatternSyntaxException

Lớ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ự.

No.Phương thứcMô tả
1boolean matches()kiểm tra xem biểu thức chính quy tất cả khớp với mẫu hay không.
2boolean find()tìm biểu thức tiếp theo khớp cùng với mẫu.
3boolean 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.
4String group()trả về chuỗi nhỏ phù hợp.
5int start()trả về vị trí ban đầu của chuỗi bé phù hợp.
6int end()trả về vị trí hoàn thành của chuỗi nhỏ phù hợp.
7int 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.

No.Phương thứcMô tả
1static 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

2Matcher matcher(CharSequence input)tạo một matcher khớp với nguồn vào đã cho với mẫu.
3static 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.
4String<> 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.
5String 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>+\.<\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 = "^<\w->+
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

RegexMô tả
<...>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ự.

RegexMô tảPatternVí dụ
X?X xẩy ra một hoặc ko lầnhellos?hello, hellos, helloss
X+X xẩy ra một hoặc nhiều lầnVersion w-w+Version A-b1_1
X*X xẩy ra không hoặc những lầnA*B*C*AAACC
XnX chỉ xảy ra n lầnd42018, 20189, 201
Xn,X xảy ra n hoặc nhiều lầnd4,2018, 20189, 201
Xy,zX xẩy ra ít tốt nhất y lần nhưng nhỏ hơn z lầnd2,32018, 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.

RegexMô tả
.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
dBất kỳ chữ số nào, viết tắt của <0-9>
DBất kỳ ký tự nào chưa phải chữ số, viết tắt của <^0-9>
sBấ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 >
SBấ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>
wBất kỳ ký kết tự chữ làm sao (chữ cái và chữ số), viết tắt của
WBấ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ừ
BKhô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:

Regex miêu tả Pattern ví dụ
| 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