Java

Regular Expression Processing in Java

Xin chào, trong bài viết này chúng ta sẽ tìm hiểu về Regular Expression (regex) trong Java với package java.util.regex gồm 2 class hỗ trợ xử lý regex là Pattern và Matcher.


PATTERN

Class Pattern được sử dụng để định nghĩa một regex mới. Class Pattern không có constructor, do đó chúng ta tạo một pattern mới bằng cách gọi static method compile():

Pattern p = Pattern.compile(patternString)

Khi đã tạo một pattern mới, chúng ta có thể tạo một đối tượng Matcher bằng cách gọi method matcher() của class Pattern:

Matcher m = p.matcher(inputString)

Trong đó:

  • patternString – chuỗi pattern cần tạo;
  • inputString – chuỗi ký tự cần áp dụng pattern.

MATCHER

Class Matcher hỗ trợ một số method sau:

  • boolean matches() – trả về giá trị true nếu toàn bộ inputString thỏa mãn với pattern (Entire sequence must match the pattern, not just a subsequence of it);
  • boolean find() – trả về giá trị true nếu nó một phần của inputString thỏa mãn với pattern (subsequence). Method find() có thể được lặp lại nhiều lần, cho phép tìm tất cả các subsequence thỏa mãn pattern;
  • String group(), group(int group), group(String groupName) – trả về String chứa matching group;
  • int start(), int stop() – trả về index của matching sequence trong inputString;
  • String replaceAll(String newString) – thay thế toàn bộ các matching sequence có trung inputString bởi newString.

Example 1: Search and Replace

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

public class test {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
		System.out.println("Please enter a string:");
		String input = in.nextLine();
		System.out.println("Search:");
		String regex = in.nextLine();
		System.out.println("Replace with:");
		String replace = in.nextLine();

        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(input);
        input = m.replaceAll(replace);    

        System.out.println(input);
        in.close();
    }
}

Execuation:
$ javac test.java
$ java test
Please enter a string:
A dog runs around a cat.
Search:
cat
Replace with:
dog
A dog runs a around a dog.

Example 2: Tag content extractor

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

public class test {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
		System.out.println("Input:");
		String input = in.nextLine();

        Pattern p = Pattern.compile("<(.+)>([^<]+)</\\1>", Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(input);

		while (m.find()) {
			System.out.println("Content: "+m.group(2));
		}

        in.close();
    }
}

Execuation:
$ javac test.java
$ java test
Input:
<h1>Hello World!</h1>
<strong>I’m Vietnamese.</strong>
Content: Hello World!
Content: I’m Vietnamese.


SUMMARY

Qua 2 ví dụ trên chúng ta đã hiểu cách sử dụng package regex trong Java. Cảm ơn các bạn đã theo dõi bài viết. Thân ái và quyết thắng.

Reference:
[1] Java Regular Expression.
[2] Regular Expression.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s