Java Regex - Biểu thức chính quy là gì và Cách sử dụng nó?



Java Regex là một API được sử dụng để xác định một mẫu để tìm kiếm hoặc thao tác các chuỗi. Bài viết này cũng sẽ nói về các lớp Biểu thức chính quy khác nhau được cung cấp bởi Java.

Trích xuất hoặc xác nhận dữ liệu là một khía cạnh quan trọng của mọi ngôn ngữ lập trình. Một trong những cách phổ biến nhất để xác thực dữ liệu là sử dụng biểu thức chính quy. sử dụng nhữngbiểu thức chính quy để mô tả một mẫu ký tự. Bài báo này trên Java Regex sẽ liệt kê các phương pháp sử dụng biểu thức khác nhau theo trình tự sau:

Bắt đầu nào!





Biểu thức chính quy là gì?

ĐẾN Biểu hiện thông thường là một chuỗi các ký tự tạo ra một mẫu tìm kiếm. Khi bạn tìm kiếm dữ liệu trong một văn bản, bạn có thể sử dụng mẫu tìm kiếm này để mô tả những gì bạn đang tìm kiếm.

Biểu thức chính quy - Java Regex - Edureka



Một biểu thức chính quy có thể là một một ký tự hoặc một mẫu phức tạp hơn. Nó có thể được sử dụng cho bất kỳ loại tìm kiếm văn bản nào và thao tác thay thế văn bản. Mẫu Regex bao gồm các ký tự đơn giản, chẳng hạn như / abc / hoặc kết hợp các ký tự đơn giản và đặc biệt, chẳng hạn như / ab * c / hoặc là /example(d+).d*/ .

Java Regex là gì?

Các Java Regex là một API được sử dụng để xác định một mẫu để tìm kiếm hoặc thao tác . Nó được sử dụng rộng rãi để xác định ràng buộc trên Chuỗi như xác thực mật khẩu và email.

Có nhiều phương pháp sử dụng Java Regex khác nhau. Vì vậy, hãy tiếp tục và xem xét các biểu thức khác nhau.



Lớp Matcher

Lớp này được sử dụng để thực hiện các phép toán so khớp trên một chuỗi ký tự. Bảng dưới đây đại diện cho các phương thức khác nhau của lớp Matcher.

phương pháp Sự miêu tả
các trận đấu boolean () Kiểm tra xem biểu thức chính quy đã cho có khớp với mẫu hay không
boolean find () Được sử dụng để tìm biểu thức tiếp theo phù hợp với mẫu
boolean find (int start) Tìm kiếm biểu thức tiếp theo khớp với mẫu từ số bắt đầu đã cho
Nhóm chuỗi () Được sử dụng để trả về dãy con đã so khớp
int start () Trả về chỉ mục bắt đầu của dãy con đã so khớp
int end () Trả về chỉ số kết thúc của dãy con đã so khớp
int groupCount () Trả về tổng số của dãy con đã so khớp

Lớp hoa văn

Lớp mẫu là một phiên bản đã biên dịch của biểu thức chính quy được sử dụng để xác định mẫu cho công cụ regex.

phương pháp Sự miêu tả
Biên dịch mẫu tĩnh (Chuỗi regex) Nó biên dịch regex đã cho và trả về thể hiện của Mẫu
Đối sánh các kết quả phù hợp (đầu vào CharSequence) Nó được sử dụng để tạo một đối sánh khớp với đầu vào đã cho với mẫu
so khớp boolean tĩnh (chuỗi regex, đầu vào CharSequence) Nó hoạt động như một sự kết hợp của các phương thức biên dịch và so khớp. Nó biên dịch biểu thức chính quy và khớp với đầu vào đã cho với mẫu
Chuỗi [] tách (đầu vào CharSequence) Được sử dụng để chia chuỗi đầu vào đã cho xung quanh các kết quả phù hợp của một mẫu nhất định
Chuỗi mẫu() Giúp trả lại mẫu regex

Bây giờ chúng ta hãy lấy một ví dụ nhỏ để hiểu cách viết một biểu thức chính quy.

import java.util.regex. * public class RegexExample {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('Chuỗi khớp với Regex - + matcher.matches ())}} đã cho

Trong trường hợp này, bên trong nó sử dụng Mẫu và Đối sánh các lớp regex để thực hiện xử lý nhưng rõ ràng,nó làm giảm các dòng mã. Lớp mẫu cũng chứa phương thức so khớp lấy regex và đầu vào Chuỗi làm đối số và trả về kết quả boolean sau khi khớp chúng. Vì vậy, mã hoạt động tốt để khớp với đầu vào với một Biểu thức chính quy trong Java. Do đó đầu ra sẽ đúng như hình dưới đây.

def __init __ (bản thân):

Đầu ra:
thật

Bây giờ chúng ta hãy xem thêm một số danh mục của Biểu thức chính quy Java.

Lớp nhân vật Regex

Bảng dưới đây đại diện cho sự kết hợp các lớp ký tự khác nhau.

Lớp nhân vậtSự miêu tả
[abc] a, b hoặc c (lớp đơn giản)
[^ abc] Bất kỳ ký tự nào ngoại trừ a, b hoặc c (phủ định)
[a-zA-Z] a đến z hoặc A đến Z, bao gồm (phạm vi)
[a-d [m-p]] a đến d, hoặc m đến p: [a-dm-p] (union)
[a-z && [def]] d, e hoặc f (giao điểm)
[a-z && [^ bc]] a đến z, ngoại trừ b và c: [ad-z] (phép trừ)
[a-z && [^ m-p]] a đến z và không phải m đến p: [a-lq-z] (phép trừ)

Thí dụ:

import java.util.regex. * public class CharacterExample {public static void main (String args []) {// false (không phải x hoặc y hoặc z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (trong số x hoặc y hoặc z) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x và y đến nhiều lần) Hệ thống .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

Bộ định lượng Regex

Các bộ định lượng chỉ định số lần xuất hiện của một ký tự. Bảng dưới đây thể hiện các định lượng khác nhau.

RegexSự miêu tả
X? X xảy ra một lần hoặc hoàn toàn không
X + X xảy ra một lần hoặc nhiều lần
X * X xảy ra không hoặc nhiều lần
X {n} X xảy ra n lần duy nhất
X {n,} X xảy ra n lần trở lên
X và Z} X xảy ra ít nhất y lần nhưng ít hơn z lần

Thí dụ:

import java.util.regex. * public class Ví dụ {public static void main (String args []) {System.out.println ('? quantifier ....') // (a hoặc y hoặc z đến một lần) System.out.println (Pattern.matches ('[ayz]?', 'A')) // output: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay và z đến nhiều lần) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a đến nhiều lần) Hệ thống. out.println (Pattern.matches ('[ayz]?', 'amnta')) // output: false // (a hoặc y hoặc z phải đến một lần) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // output: false System.out.println (' + quantifier .... ') // (a hoặc y hoặc z một lần hoặc nhiều lần) System.out.println (Mẫu .matches ('[ayz] +', 'a')) // output: true // (a xuất hiện nhiều lần) System.out.println (Pattern.matches ('[ayz] +', 'aaa' )) // outpu: true // (a hoặc y hoặc z đến nhiều lần) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z và t không phải là mẫu phù hợp) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // output: false System.out.println ('* quantifier ....') // (a hoặc y hoặc z có thể đến 0 hoặc nhiều lần ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // output: true}}

Về cơ bản, nó sẽ tìm kiếm bộ định lượng phù hợp và khớp với kết quả tìm kiếm.

Regex Metacharacters

Các siêu ký tự biểu thức chính quy hoạt động như các mã rút gọn. Hãy xem bảng dưới đây để hiểu các loại siêu ký tự khác nhau.

RegexSự miêu tả
. Nó có thể là bất kỳ ký tự nào (có thể có hoặc không khớp với dấu chấm hết)
d Đại diện cho bất kỳ chữ số nào, viết tắt của [0-9]
D Đại diện cho bất kỳ không phải chữ số nào, viết tắt của [^ 0-9]
S Đại diện cho bất kỳ ký tự khoảng trắng nào, viết tắt của [tnx0Bfr]
S Nó có thể là một ký tự không có khoảng trắng, viết tắt của [^ s]
trong Nó có thể là một ký tự từ, viết tắt của [a-zA-Z_0-9]
TRONG Đại diện cho bất kỳ ký tự không phải từ nào, viết tắt của [^ w]
b Đại diện cho một ranh giới từ
B Đó là một ranh giới không lời

Thí dụ:

import java.util.regex. * public class MetacharExample {public static void main (String args []) {// d có nghĩa là chữ số System.out.println ('metacharacters d ....') // (không phải chữ số) System.out.println (Pattern.matches ('d', 'abc')) // Đầu ra: false // (chữ số và đến một lần) System.out.println (Pattern.matches ('d', '1') ) // Đầu ra: true // (chữ số nhưng xuất hiện nhiều hơn một lần) System.out.println (Pattern.matches ('d', '4443')) // Đầu ra: false // (chữ số và ký tự) System.out .println (Pattern.matches ('d', '323abc')) // Đầu ra: false // D có nghĩa là System.out.println không phải chữ số ('metacharacters D ....') // (không phải chữ số nhưng đến nhiều lần) System.out.println (Pattern.matches ('D', 'abc')) // Đầu ra: false // Nó là một chữ số System.out.println (Pattern.matches ('D', '1 ')) // Đầu ra: false System.out.println (Pattern.matches (' D ',' 4443 ')) // Đầu ra: false // (chữ số và ký tự) System.out.println (Pattern.matches (' D ',' 323abc ')) // Đầu ra: false // (không phải chữ số và đến một lần) System.out.println (Pattern.matches (' D ',' m ')) // Đầu ra: true System.out .pr intln ('metacharacters D with quantifier ....') // (không phải chữ số và có thể đến 0 hoặc nhiều lần) System.out.println (Pattern.matches ('D *', 'abc')) // Kết quả : thật } }

Dựa trên các điều kiện nêu trên, nó sẽ hiển thị đầu ra. Đó là cách nó hoạt động. Vì vậy, đó là tất cả về các loại Regex. Với điều này, chúng ta đi đến phần cuối của bài viết này. Tôihy vọng bạn tìm thấy nó thông tin. Nếu bạn muốn tìm hiểu thêm, bạn có thể xem cũng.

Kiểm tra của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Chúng tôi ở đây để giúp bạn từng bước trên hành trình của bạn, để trở thành một người ngoài câu hỏi phỏng vấn java này, chúng tôi còn đưa ra một chương trình giảng dạy được thiết kế cho sinh viên và các chuyên gia muốn trở thành một Nhà phát triển Java.

sắp xếp danh sách c ++

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của bài viết “Java Regex” này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.