为什么我的正则表达式贪婪?

时间:2015-08-09 09:15:34

标签: java regex

  1. alsjasdfad asdfasfasfa
  2. 2.asdfasdfasdf

    3

    2

    以上是我试图与此正则表达式匹配的字符串 - \ n1。(。+)\ n2。 所以,我想要做的是匹配1.和下一个2.但我的正则表达式仍然匹配最后的2.我使用'单行'修饰符,即点匹配此正则表达式上的所有。我做错了什么?

1 个答案:

答案 0 :(得分:4)

(.+)更改为(.+?),这将在“不情愿量词”下的Pattern类的JavaDoc中介绍。

如果我们看一下official tutorial,我们可以在“贪婪,不情愿和占有量词之间的差异”中阅读更多关于它的内容。

  然而,不情愿的量词采用相反的方法:它们从输入字符串的开头开始,然后不情愿地一次吃一个字符寻找匹配。他们尝试的最后一件事是整个输入字符串。