加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 06:34:46 所属栏目:百科 来源:网络整理
导读:我正在读 regular expressions reference,我在想?和??字符。你可以用一些例子来解释我们的用处吗?我不明白他们 谢谢 关键区别在哪里?和??关心他们的懒惰。 ??是懒惰吗?不是。 假设你想在一个文本框中搜索“car”这个词,但是你不想只限于单一的“car”;
我正在读 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 ??”并返回在第二个参数“我拥有三辆车”中找到的第一场比赛。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读