Quy trình
- Lấy chuỗi đầu vào nhiều dòng.
- Tách thành mảng token bằng
split("\\r?\\n"). - Compile regex cần tìm.
- Lấy Matcher object.
- Duyệt mảng, dùng
matcher.reset(strArray[i])để đặt lại input cho từng dòng. - 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.