正则表达式 – 正则表达式中的问号

前端之家收集整理的这篇文章主要介绍了正则表达式 – 正则表达式中的问号前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在读 regular expressions reference,我在想?和??字符。你可以用一些例子来解释我们的用处吗?我不明白他们

谢谢

关键区别在哪里?和??关心他们的懒惰。 ??是懒惰吗?不是。

假设你想在一个文本框中搜索“car”这个词,但是你不想只限于单一的“car”;你也想与复数“汽车”相配。

这是一个例子:

我拥有三辆车。

现在,如果我想匹配单词“car”,我只想得到字符串“car”作为回报,我会用懒惰?像这样:

汽车??

这说,“找车或汽车;如果你找到,回车,没有更多”。

现在,如果我想和相同的词匹配(“汽车”或“汽车”),而我想让整个比赛得到回报,我会使用非懒惰?像这样:

汽车?

这就是说,“找车或汽车”,无论你找到什么,都要返回汽车或汽车。“

在计算机编程的世界里,懒惰一般意味着“仅需要评估”。那么懒惰?只能返回尽可能多的匹配;因为“汽车”中的“s”是可选的,不要退回。另一方面,非懒惰(有时称为贪婪)操作尽可能地评估,因此?返回所有的匹配,包括可选的“s”。

我个人觉得自己在使用?作为使其他正则表达式运算符懒惰(像*和运算符)的方式比我使用它更简单的字符可选性,而是YMMV。

代码中看到

以上是以Clojure为例,

(re-find #"cars??" "I own three cars.")
;=> "car"

(re-find #"cars?" "I own three cars.")
;=> "cars"

项目重新找到是一个函数,将其第一个参数作为正则表达式#“cars ??”并返回在第二个参数“我拥有三辆车”中找到的第一场比赛。

猜你在找的正则表达式相关文章