首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regexp:使用前瞻性断言作为条件

Regexp:使用前瞻性断言作为条件
EN

Stack Overflow用户
提问于 2013-12-19 17:24:15
回答 2查看 91关注 0票数 0

我相信下面的两个正则表达式做了同样的事情:

代码语言:javascript
复制
\ba{3}\b

(?=\ba{3}\b).*

这两个词只匹配第二个单词(aaa):

我想知道在性能方面还是在其他方面是否有什么区别,或者因为某种原因,其中一个比另一个更可取。

编辑:

确实,上面的模式匹配不同的东西( "aaa“和”aaa bbb")。对不起,是我的错。

我最初的模式是:

代码语言:javascript
复制
(?=^a{3}$).*
^a{3}$

我最初的例子是:

代码语言:javascript
复制
zzz
aaa
bbb

就像这样,我认为这两种模式都符合"aaa“。

我知道第二个更快。还有什么区别吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-21 16:09:09

谈到正则表达式,我想到了三件事:

  1. 匹配域
  2. 复杂性
  3. 速度

与所需字符串匹配的任何正则表达式的简单性与其速度有直接关系,因此使用较少的表达式,您将有更快的速度搜索整个文本。

有些表达式真的很贵,所以当你试图选择你的正则表达式的最佳选择时,你为什么要想得更多?!

在regex ^a{3}$上,引擎会说:,我真的是认真的!它是直接的,简单的,有一个明显的匹配域。

然而,在第二个(?=^a{3}$).*引擎并不意味着它。它可能有这么多匹配的情况,它有一个积极的展望和消耗更多的资源。

现在,你要爱哪一个?

票数 0
EN

Stack Overflow用户

发布于 2013-12-19 17:26:18

正如曾傑瑞在评论中指出的,第二个与aaa bbb相匹配。然而,就我个人而言,我认为它比\ba{3}\b.*更简单

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20687933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档