我有以下文字
tooooooooooooon
根据我正在阅读的这本书,当?
任何量词之后,它变得非贪婪.
我的正则表达式to*?n
仍在回归tooooooooooooon
.
它应该回归ton
不应该吗?
知道为什么吗?
正则表达式只能匹配实际存在的文本片段.
因为字符串'ton'不存在于字符串中的任何位置,所以它不能是匹配的结果.匹配只返回原始字符串的子字符串
编辑:要清楚,如果你使用下面的字符串,额外的'n'
toooooooonoooooon
这个正则表达式(没有指定'o')
t.*n
将匹配以下(在'n'之前尽可能多的字符)
toooooooonoooooon
但正则表达式
t.*?n
只会匹配以下内容(在'n'之前尽可能少的字符)
toooooooon
正则表达式总是渴望匹配.
你的表达说:
A 't', followed by *as few as possible* 'o's, followed by a 'n'.
这意味着任何必要的都将匹配,因为最后有一个'n',表达式渴望达到.匹配所有o是它成功的唯一可能性.