正则表达非常贪婪

Vin*_*cio 7 regex regex-greedy

我有以下文字

tooooooooooooon
Run Code Online (Sandbox Code Playgroud)

根据我正在阅读的这本书,当?任何量词之后,它变得非贪婪.

我的正则表达式to*?n仍在回归tooooooooooooon.

它应该回归ton不应该吗?

知道为什么吗?

Gar*_*eth 46

正则表达式只能匹配实际存在的文本片段.

因为字符串'ton'不存在于字符串中的任何位置,所以它不能是匹配的结果.匹配只返回原始字符串的子字符串

编辑:要清楚,如果你使用下面的字符串,额外的'n'

toooooooonoooooon
Run Code Online (Sandbox Code Playgroud)

这个正则表达式(没有指定'o')

t.*n
Run Code Online (Sandbox Code Playgroud)

将匹配以下(在'n'之前尽可能多的字符)

toooooooonoooooon
Run Code Online (Sandbox Code Playgroud)

但正则表达式

t.*?n
Run Code Online (Sandbox Code Playgroud)

只会匹配以下内容(在'n'之前尽可能少的字符)

toooooooon
Run Code Online (Sandbox Code Playgroud)


Tom*_*lak 5

正则表达式总是渴望匹配.

你的表达说:

A 't', followed by *as few as possible* 'o's, followed by a 'n'.

这意味着任何必要的都将匹配,因为最后有一个'n',表达式渴望达到.匹配所有o是它成功的唯一可能性.