正则表达式(\ S +?)vs(\ S +))

时间:2017-09-20 20:10:52

标签: regex

以下两种表达方式有什么区别? 1. (\S+) 2. (\S+?)

如果有人能解释一下,我将不胜感激。

谢谢,

1 个答案:

答案 0 :(得分:0)

第一种方式匹配一个非空白字符的单个字符,在一次和无限次之间,尽可能多次,根据需要返回(贪婪)

第二种方式匹配一个非空白字符的单个字符,在一次和无限次之间,尽可能少,根据需要进行扩展(懒惰)

区别在于贪婪或懒惰的重复。来自Regex Buddy帮助文件:

  

贪婪的量词将首先尝试尽可能多地重复令牌,并逐渐放弃匹配,因为引擎回溯以找到整体匹配。延迟量词将首先根据需要重复令牌次数,并在引擎回溯到正则表达式以找到整体匹配时逐渐扩展匹配。

差异可以在下面的图片中看到:

Greedy quantifier

Lazy quantifier