我有一个简单的程序。
public class RaviTest {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("The test ID is (.*?)");
Matcher matcher = pattern.matcher("The test ID is 152454");
System.out.println(matcher.find());
System.out.println(matcher.group(1));
}
}
我期望从这个程序得到的输出是" 152454"但是它正在打印一个空格""。
如果我尝试打印matcher.group(0),则打印"测试ID为"。
编辑:
如果我使用matcher.matches()而不是matcher.find(),它会正确打印。
请帮助我了解我哪里出错了。
答案 0 :(得分:3)
PropertySourceBootstrapConfiguration
在0和无限次之间匹配,*
使其变得懒惰,这意味着它会尽可能少地匹配,因此在这种情况下,?
将永远匹配一个空字符串。
您可以尝试删除.*?
以使其变得贪婪,或者只需将?
替换为*?
,以使其在1和无限次之间匹配。