正则表达式 – 正则表达式中的问号
我正在读
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 ??”并返回在第二个参数“我拥有三辆车”中找到的第一场比赛。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |