究竟是什么。*? 用正则表达式吗? “。*?([一个
这个问题在这里已经有了答案:
这个?
如果我可以这样称呼它并使得.*
匹配尽可能少的匹配(称为“懒惰”),直到模式中的下一场比赛为止。
在fall/2005
年fall/2005
,第一个.*?
将匹配在([am/]*)
的第一个匹配,这就在f
之前。 因此, .*?
匹配0字符,以便([am/]*)
将匹配fall/
以来([am/]*)
无法比拟的了,该模式的下一部分.*
匹配什么字符串中离开,这意味着2005
。
与此相反.*([am/]*).*
,你将有.*
匹配尽可能第一(指整个字符串),并尝试回去,使其他条件相匹配。 除了其他量词可以匹配0个字符的问题外,这样.*
就可以匹配整个字符串(称为“贪婪”)。
也许不同的例子会有所帮助。
.*ab
在:
aaababaaabab
在这里, .*
会匹配尽可能多的字符,然后尝试匹配ab
。 因此, .*
将匹配aaababaaab
,其余的匹配ab
。
.*?ab
在:
aaababaaabab
在这里, .*?
将尽可能少地匹配,直到它可以匹配那个正则表达式中的ab
。 ab
的第一次出现在这里:
aaababaaabab
^^
所以, .*?
匹配aa
而ab
将匹配ab
。
在正则表达式中:
? :发生否或一次,? 是{0,1}的简称
* ? :? 在量词使其成为不情愿的量词之后,它试图找到最小的匹配。
假设你有像这样的字符串输入
this is stackoverflow
并使用正则表达式
.*
所以输出将是
this is stackoverflow
但如果你使用正则表达式
.*?
你的输出将是
this
所以从上面的例子可以清楚地看到,如果你使用。*它会给你整个字符串。 为了防止这种情况发生,如果你只想在你应该使用的空间之前先使用第一台装置。
有关更多实用知识,您可以查看http://regexpal.com/。
链接地址: http://www.djcxy.com/p/76893.html