当前位置: 代码迷 >> 综合 >> 正则表达式(15)——贪婪模式与非贪婪模式
  详细解决方案

正则表达式(15)——贪婪模式与非贪婪模式

热度:104   发布时间:2023-10-01 21:56:08.0

从文本提取出名字:

Match match = Regex.Match("大家好。我是S.H.E。我22岁了。我病了,呜呜。fffff", "我是(.+)。");//没有加^$。 

看结果。+、*的匹配默认是贪婪(greedy)的:尽可能多的匹配,直到“再贪婪一点儿”其后的匹配模式就没法匹配为止

在+、*后添加?就变成非贪婪模式(? 的另外一个用途):让其后的匹配模式尽早的匹配。修改成"我是(.+?)。"

一般开发的时候不用刻意去修饰为非贪婪模式,只有遇到bug的时候发现是贪婪模式的问题再去解决。因为贪婪效率高。