tôi có mã tiếp theo:không tham lam Regular Expression trong Java
public static void createTokens(){
String test = "test is a word word word word big small";
Matcher mtch = Pattern.compile("test is a (\\s*.+?\\s*) word (\\s*.+?\\s*)").matcher(test);
while (mtch.find()){
for (int i = 1; i <= mtch.groupCount(); i++){
System.out.println(mtch.group(i));
}
}
}
Và có đầu ra tiếp theo:
word
w
Nhưng theo ý kiến của tôi nó phải là:
word
word
Somebody xin vui lòng giải thích cho tôi tại sao như vậy?
Và bây giờ nhóm thứ hai đang chụp quá nhiều thay vì quá ít. Không tham lam không phải là vấn đề, và tham lam không phải là giải pháp. –
Bạn đúng, nhưng IMHO, sự không tham lam của nhóm chụp thứ hai giải thích lý do tại sao nó chỉ chụp "w". Nhóm chụp đầu tiên phải chụp "từ" vì chữ "từ" theo sau nó. Tôi không biết chính xác những gì anh ta đang tìm kiếm và anh ấy đã chỉnh sửa câu hỏi sau khi tôi gửi câu trả lời của tôi, vì vậy tôi không thể cung cấp một regexp chính xác. – theglauber