正则表达式 (\S+?) 与 (\S+)) [重复]

Posted

技术标签:

【中文标题】正则表达式 (\\S+?) 与 (\\S+)) [重复]【英文标题】:Regular Expression (\S+?) vs (\S+)) [duplicate]正则表达式 (\S+?) 与 (\S+)) [重复] 【发布时间】:2018-03-02 01:01:27 【问题描述】:

下面两个表达式有什么区别? 1.(\S+) 2.(\S+?)

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

谢谢,

【问题讨论】:

regex101.com 基于我在这里运行的快速测试,(\S+) 会找到你的整个单词,(\S+?) 会找到你的单个字符。不过,我对自己的答案没有足够的信心将其发布为实际答案。 见***.com/questions/25528452/… 【参考方案1】:

第一种意味着匹配一个非空白字符,在一次到无限次之间,尽可能多,根据需要返回(贪婪).

第二个意思是匹配一个非空白字符的单个字符,在一次到无限次之间,尽可能少,根据需要扩展(惰性) .

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

贪婪量词会首先尝试尽可能多地重复标记,然后随着引擎回溯以找到整体匹配,逐渐放弃匹配。惰性量词将首先根据需要重复标记几次,然后随着引擎通过正则表达式回溯以找到整体匹配,逐渐扩大匹配。

如下图所示:

【讨论】:

两张图片看起来是一样的,尽管它们的网址不同。 @Arjan:谢谢。不知何故设法将相同的图像粘贴了两次。嗬!固定的。感谢您指出这一点。

以上是关于正则表达式 (\S+?) 与 (\S+)) [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python正则表达式-或在捕获组中间[重复]

了解 Perl 正则表达式修饰符 /m 和 /s [重复]

Lua中的重复正则表达式

通过forEach将变量插入正则表达式[重复]

Java 中的正则表达式,\\s 与 \\s+

C#正则表达式解析HTML [重复]