Java 为什么我的正则表达式是贪婪的? 阿尔贾斯德法德 asdfasfasfa

Java 为什么我的正则表达式是贪婪的? 阿尔贾斯德法德 asdfasfasfa,java,regex,Java,Regex,2.asdfasdfasdf 三, 二, 上面是我试图与这个正则表达式匹配的字符串-\n1。(.+)\n2。 所以,我想做的是第一场比赛。下一个2。但我的正则表达式仍然匹配最后2个。我使用的是“单行”修饰符,也就是说,点匹配这个正则表达式上的所有内容。我做错了什么?将(.+)更改为(.+?),这在类的JavaDoc中的“不情愿的量词”下进行了介绍 如果我们看一下这个词,我们可以在“贪婪、不情愿和占有量词之间的差异”下读到更多关于它的内容 然而,不情愿的量词采取了相反的方法:它们从输入字符串的开头

2.asdfasdfasdf

三,

二,

上面是我试图与这个正则表达式匹配的字符串-\n1。(.+)\n2。 所以,我想做的是第一场比赛。下一个2。但我的正则表达式仍然匹配最后2个。我使用的是“单行”修饰符,也就是说,点匹配这个正则表达式上的所有内容。我做错了什么?

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

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

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

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

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

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


(.+)
更改为
(.+?)
,这在Pattern类的JavaDoc中有介绍。@BenjaminGruenbaum,这很有效!如果您能解释为什么这样做并将其作为答案发布,我将很高兴将这个问题授予您。将
(.+)
更改为
(.+?)
,这在模式类的JavaDoc中有介绍。@BenjaminGruenbaum,这是有效的!如果你能解释一下为什么会这样,并把答案贴出来,我很乐意把这个问题奖励给你。