Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Khớp nhiều dòng trong Java Regular Expressions


Quy trình

  1. Lấy chuỗi đầu vào nhiều dòng.
  2. Tách thành mảng token bằng split("\\r?\\n").
  3. Compile regex cần tìm.
  4. Lấy Matcher object.
  5. Duyệt mảng, dùng matcher.reset(strArray[i]) để đặt lại input cho từng dòng.
  6. Gọi find() để tìm khớp trên từng dòng.

Ví dụ: Tìm số trên từng dòng

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

public class MatchingText {
    public static void main(String[] args) {
        String input = "sample text line 1 \n line2 353 35 63 \n line 3 53 35";
        String regex = "\\d";
        String[] strArray = input.split("\\r?\\n");
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        for (int i = 0; i < strArray.length; i++) {
            matcher.reset(strArray[i]);
            System.out.println("Line:: " + (i + 1));
            while (matcher.find()) {
                System.out.print(matcher.group() + " ");
            }
            System.out.println();
        }
    }
}

Kết quả

Line:: 1 1
Line:: 2 2 3 5 3 3 5 6 3
Line:: 3 3 5 3 3 5

Giải thích

  • Dòng 1: chỉ có 1
  • Dòng 2: 2 3 5 3 3 5 6 3 (từ line2 353 35 63)
  • Dòng 3: 3 5 3 3 5 (từ line 3 53 35)

Mẹo

Có thể dùng flag Pattern.MULTILINE kết hợp ^ và $ khớp đầu/cuối từng dòng thay vì tách mảng thủ công.