示例:https://regex101.com/r/n4x91E/1
INPUT STRING:
"我认为我们必须向某个人指出某些事情,在此之后还要向他提出其他一些事情"
MY REGULAR EXPRESSION:
(point).*(out)
返回错误结果:
"我认为我们也必须point certain things out to this man, and after that point some other things out
和#34;
预期结果:
"我想我们必须point certain things out
给这个男人,并且在那之后还有其他一些东西给他#34;
如何更改我的正则表达式以获取第一组?
答案 0 :(得分:6)
您可以在正则表达式中使用延迟量词,如此版本:
https://regex101.com/r/n4x91E/2
(point).*?(out)
在Java documentation这个量词被称为不情愿,但我认为懒惰更常用...
答案 1 :(得分:1)
你可以试试这个:
(point).*?(out)
如果您只想要第一次出现,那么不要使用全局标志......它只匹配第一次出现。请参阅以下链接。否则你可以把全球旗帜' g'
答案 2 :(得分:1)
让正则表达式非贪婪:
(point.*?out)
示例代码:
String line = "I think we have to point certain things out to this man, and after that point some other things out to him as well";
String pattern = ".*(point.*?out).*";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
if (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
}
<强>输出:强>
point certain things out
point some other things out