我很难理解一个简单的问题regex.我用Google搜索了一下.不知何故,它并没有让我感到惊讶.
这是方法:
public static void testMethod(){
String line = "This order was placed for QT3000! OK?";
String pattern = "(.*)(\\d+)(.*)";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
System.out.println("Found value: " + m.group(3) );
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
我原本group(2)打算打印3000.但为什么它只打印0.
第2组捕获的文本仅包含0因为第一个贪心.*.它匹配最后一位数字,并且\d+只有最后一位数字.查看正则表达式的演示.
要修复它,请使用延迟点匹配:
(.*?)(\d+)(.*)
^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |