我想用 java 编写一个正则表达式,它将从量词的两边找到最短的可用匹配。
例如,对于此模式 "a.*?b"
应用于 "aaaaaacbbbbbbb"
:
我想找到 "acb"
但我得到了 "aaaaaacb"
。
有人知道我可以使用哪个正则表达式吗?
最佳答案
您可以通过丢弃贪婪的 .*
从一开始就模仿不情愿的匹配。在这种情况下,这将变为 .*(a.*?b)
,如果您获得组号 1:
String example = "aaaaaacbbbbbbb";
Matcher m = Pattern.compile(".*(a.*?b)").matcher(example);
m.find();
System.out.println(m.group(1));
关于Java 勉强从量词两边匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16656142/