Gói java.util.regex
trong Java cung cấp các lớp và giao diện để làm việc với các biểu thức chính quy (regular expressions). Biểu thức chính quy là một công cụ mạnh mẽ cho phép bạn thực hiện tìm kiếm và thay thế chuỗi, kiểm tra định dạng, và phân tích cú pháp văn bản. Gói này bao gồm ba lớp chính: Pattern
, Matcher
, và PatternSyntaxException
. Dưới đây là mô tả chi tiết về từng lớp trong gói java.util.regex
.
1. Lớp Pattern
1.1. Định nghĩa
Lớp Pattern
đại diện cho một biểu thức chính quy đã biên dịch. Bạn không thể tạo đối tượng Pattern
trực tiếp; thay vào đó, bạn sử dụng phương thức tĩnh compile()
để biên dịch một chuỗi thành một đối tượng Pattern
.
1.2. Phương thức chính
- compile(String regex): Biên dịch chuỗi regex thành một đối tượng
Pattern
.
- matcher(CharSequence input): Tạo một đối tượng
Matcher
cho chuỗi đầu vào sử dụng Pattern
này.
- split(CharSequence input): Chia chuỗi đầu vào thành một mảng các chuỗi theo mẫu được chỉ định.
- matches(): Kiểm tra xem chuỗi đầu vào có khớp với mẫu hay không.
1.3. Ví dụ sử dụng
import java.util.regex.Pattern;
public class PatternExample {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\d+"); // Mẫu tìm số
System.out.println("Pattern: " + pattern);
}
}
2. Lớp Matcher
2.1. Định nghĩa
Lớp Matcher
được tạo ra từ một đối tượng Pattern
và chịu trách nhiệm cho việc tìm kiếm và khớp với chuỗi đầu vào. Nó cung cấp các phương thức để kiểm tra và lấy thông tin về các kết quả khớp.
2.2. Phương thức chính
- find(): Kiểm tra xem có khớp nào trong chuỗi hay không và di chuyển con trỏ tới vị trí khớp tiếp theo.
- matches(): Kiểm tra xem toàn bộ chuỗi đầu vào có khớp với mẫu không.
- group(): Trả về chuỗi khớp hiện tại.
- start() và end(): Lấy chỉ số bắt đầu và kết thúc của chuỗi khớp.
- replaceAll(String replacement): Thay thế tất cả các chuỗi khớp bằng chuỗi thay thế đã chỉ định.
2.3. Ví dụ sử dụng
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatcherExample {
public static void main(String[] args) {
String text = "123abc456";
Pattern pattern = Pattern.compile("\d+");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Found: " + matcher.group() + " at index " + matcher.start());
}
}
}
3. Lớp PatternSyntaxException
3.1. Định nghĩa
Lớp PatternSyntaxException
là một ngoại lệ được ném ra khi có lỗi trong cú pháp của biểu thức chính quy. Nó chứa thông tin chi tiết về lỗi như vị trí lỗi trong mẫu và lý do.
3.2. Phương thức chính
- getDescription(): Trả về mô tả về lỗi.
- getIndex(): Trả về chỉ số vị trí của lỗi trong mẫu.
- getPattern(): Trả về mẫu chính quy gây ra lỗi.
3.3. Ví dụ sử dụng
import java.util.regex.PatternSyntaxException;
public class PatternSyntaxExceptionExample {
public static void main(String[] args) {
try {
Pattern pattern = Pattern.compile("["); // Cú pháp không hợp lệ
} catch (PatternSyntaxException e) {
System.out.println("Pattern syntax error: " + e.getDescription());
}
}
}
4. Kết luận
Gói java.util.regex
cung cấp các lớp mạnh mẽ để làm việc với các biểu thức chính quy trong Java. Lớp Pattern
cho phép bạn biên dịch và định nghĩa các mẫu, lớp Matcher
giúp tìm kiếm và khớp các chuỗi đầu vào với mẫu, và lớp PatternSyntaxException
xử lý các lỗi cú pháp có thể xảy ra. Hiểu rõ về các lớp này sẽ giúp bạn thực hiện các thao tác xử lý chuỗi một cách hiệu quả và chính xác.