Java tut 42 : Java RegEx

0
(0)

Regular Expression là gì?

Biểu thức chính quy là một chuỗi các ký tự tạo thành 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 có thể là một ký tự đơn hoặc một mẫu phức tạp hơn.

Biểu thức chính quy có thể được sử dụng để thực hiện tất cả các loại hoạt động tìm kiếm văn bản và thay thế văn bản .

Java không tích hợp sẵn lớp Biểu thức chính quy, nhưng chúng ta có thể nhập java.util.regex gói để làm việc với biểu thức chính quy. Gói này bao gồm các lớp sau:

  • Pattern Lớp – Xác định một mẫu (được sử dụng trong tìm kiếm)
  • Matcher Lớp – Được sử dụng để tìm kiếm mẫu
  • PatternSyntaxException Lớp – Chỉ ra lỗi cú pháp trong một mẫu biểu thức chính quy

Thí dụ

Tìm hiểu xem có bất kỳ sự xuất hiện nào của từ “w3schools” trong một câu không:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher("Visit W3Schools!");
    boolean matchFound = matcher.find();
    if(matchFound) {
      System.out.println("Match found");
    } else {
      System.out.println("Match not found");
    }
  }
}
// Outputs Match found

Hãy tự mình thử »

Giải thích ví dụ

Trong ví dụ này, Từ “w3schools” đang được tìm kiếm trong một câu.

Đầu tiên, mẫu được tạo bằng Pattern.compile()phương pháp này. Tham số đầu tiên cho biết mẫu nào đang được tìm kiếm và tham số thứ hai có cờ để chỉ ra rằng tìm kiếm phải không phân biệt chữ hoa chữ thường. Tham số thứ hai là tùy chọn.

Các matcher()phương pháp được sử dụng để tìm kiếm các mẫu trong một chuỗi. Nó trả về một đối tượng Matcher chứa thông tin về tìm kiếm đã được thực hiện.

Các find()phương thức trả về true nếu mô hình đã được tìm thấy trong chuỗi và false nếu nó không được tìm thấy.


FLags

Các cờ trong compile()phương thức thay đổi cách thực hiện tìm kiếm. Dưới đây là một vài trong số họ:

  • Pattern.CASE_INSENSITIVE – Trường hợp các chữ cái sẽ bị bỏ qua khi thực hiện tìm kiếm.
  • Pattern.LITERAL – Các ký tự đặc biệt trong mẫu sẽ không có bất kỳ ý nghĩa đặc biệt nào và sẽ được coi như các ký tự thông thường khi thực hiện tìm kiếm.
  • Pattern.UNICODE_CASE– Sử dụng nó cùng với CASE_INSENSITIVElá cờ để bỏ qua trường hợp các chữ cái nằm ngoài bảng chữ cái tiếng Anh

Mẫu biểu thức chính quy

Tham số đầu tiên của Pattern.compile()phương thức là mẫu. Nó mô tả những gì đang được tìm kiếm.

Dấu ngoặc nhọn được sử dụng để tìm một loạt các ký tự:

ExpressionDescription
[abc]Find one character from the options between the brackets
[^abc]Find one character NOT between the brackets
[0-9]Find one character from the range 0 to 9

Metacharacters

Metacharacters là những ký tự có ý nghĩa đặc biệt:

MetacharacterDescription
|Find a match for any one of the patterns separated by | as in: cat|dog|fish
.Find just one instance of any character
^Finds a match as the beginning of a string as in: ^Hello
$Finds a match at the end of the string as in: World$
\dFind a digit
\sFind a whitespace character
\bFind a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b
\uxxxxFind the Unicode character specified by the hexadecimal number xxxx

Bộ định lượng

Bộ định lượng xác định các đại lượng:

QuantifierDescription
n+Matches any string that contains at least one n
n*Matches any string that contains zero or more occurrences of n
n?Matches any string that contains zero or one occurrences of n
n{x}Matches any string that contains a sequence of X n‘s
n{x,y}Matches any string that contains a sequence of X to Y n‘s
n{x,}Matches any string that contains a sequence of at least X n‘s

Lưu ý: Nếu biểu thức của bạn cần tìm kiếm một trong các ký tự đặc biệt, bạn có thể sử dụng dấu gạch chéo ngược (\) để loại bỏ chúng. Trong Java, dấu gạch chéo ngược trong chuỗi cần phải được thoát khỏi chính nó, vì vậy cần phải có hai dấu gạch chéo ngược để thoát khỏi các ký tự đặc biệt. Ví dụ: để tìm kiếm một hoặc nhiều dấu chấm hỏi, bạn có thể sử dụng biểu thức sau: “\\?”

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

Biểu thức chính quy là một chuỗi các ký tự tạo thành 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 có thể là một ký tự đơn hoặc một mẫu phức tạp hơn.

Biểu thức chính quy có thể được sử dụng để thực hiện tất cả các loại hoạt động tìm kiếm văn bản và thay thế văn bản .

Java không tích hợp sẵn lớp Biểu thức chính quy, nhưng chúng ta có thể nhập java.util.regex gói để làm việc với biểu thức chính quy. Gói này bao gồm các lớp sau:

  • Pattern Lớp – Xác định một mẫu (được sử dụng trong tìm kiếm)
  • Matcher Lớp – Được sử dụng để tìm kiếm mẫu
  • PatternSyntaxException Lớp – Chỉ ra lỗi cú pháp trong một mẫu biểu thức chính quy

Thí dụ

Tìm hiểu xem có bất kỳ sự xuất hiện nào của từ “w3schools” trong một câu không:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {
    Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher("Visit W3Schools!");
    boolean matchFound = matcher.find();
    if(matchFound) {
      System.out.println("Match found");
    } else {
      System.out.println("Match not found");
    }
  }
}
// Outputs Match found

Hãy tự mình thử »

Giải thích ví dụ

Trong ví dụ này, Từ “w3schools” đang được tìm kiếm trong một câu.

Đầu tiên, mẫu được tạo bằng Pattern.compile()phương pháp này. Tham số đầu tiên cho biết mẫu nào đang được tìm kiếm và tham số thứ hai có cờ để chỉ ra rằng tìm kiếm phải không phân biệt chữ hoa chữ thường. Tham số thứ hai là tùy chọn.

Các matcher()phương pháp được sử dụng để tìm kiếm các mẫu trong một chuỗi. Nó trả về một đối tượng Matcher chứa thông tin về tìm kiếm đã được thực hiện.

Các find()phương thức trả về true nếu mô hình đã được tìm thấy trong chuỗi và false nếu nó không được tìm thấy.


Cờ

Các cờ trong compile()phương thức thay đổi cách thực hiện tìm kiếm. Dưới đây là một vài trong số họ:

  • Pattern.CASE_INSENSITIVE – Trường hợp các chữ cái sẽ bị bỏ qua khi thực hiện tìm kiếm.
  • Pattern.LITERAL – Các ký tự đặc biệt trong mẫu sẽ không có bất kỳ ý nghĩa đặc biệt nào và sẽ được coi như các ký tự thông thường khi thực hiện tìm kiếm.
  • Pattern.UNICODE_CASE– Sử dụng nó cùng với CASE_INSENSITIVElá cờ để bỏ qua trường hợp các chữ cái nằm ngoài bảng chữ cái tiếng Anh

Mẫu biểu thức chính quy

Tham số đầu tiên của Pattern.compile()phương thức là mẫu. Nó mô tả những gì đang được tìm kiếm.

Dấu ngoặc nhọn được sử dụng để tìm một loạt các ký tự:

ExpressionDescription
[abc]Find one character from the options between the brackets
[^abc]Find one character NOT between the brackets
[0-9]Find one character from the range 0 to 9

Siêu nhân vật

Metacharacters là những ký tự có ý nghĩa đặc biệt:

MetacharacterDescription
|Find a match for any one of the patterns separated by | as in: cat|dog|fish
.Find just one instance of any character
^Finds a match as the beginning of a string as in: ^Hello
$Finds a match at the end of the string as in: World$
\dFind a digit
\sFind a whitespace character
\bFind a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b
\uxxxxFind the Unicode character specified by the hexadecimal number xxxx

Bộ định lượng

Bộ định lượng xác định các đại lượng:

QuantifierDescription
n+Matches any string that contains at least one n
n*Matches any string that contains zero or more occurrences of n
n?Matches any string that contains zero or one occurrences of n
n{x}Matches any string that contains a sequence of X n‘s
n{x,y}Matches any string that contains a sequence of X to Y n‘s
n{x,}Matches any string that contains a sequence of at least X n‘s

Lưu ý: Nếu biểu thức của bạn cần tìm kiếm một trong các ký tự đặc biệt, bạn có thể sử dụng dấu gạch chéo ngược (\) để loại bỏ chúng. Trong Java, dấu gạch chéo ngược trong chuỗi cần phải được thoát khỏi chính nó, vì vậy cần phải có hai dấu gạch chéo ngược để thoát khỏi các ký tự đặc biệt. Ví dụ: để tìm kiếm một hoặc nhiều dấu chấm hỏi, bạn có thể sử dụng biểu thức sau: “\\?”


How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Related posts

Java Tut 49: Phương thức toán học Java ( Java Math)

Java Tut 48: String Methods

Java Tut 47: Từ khóa Java