0

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

\ba{3}\b

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

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

zzz aaa bbb

我想知道在性能或任何其他方面之间是否有任何区别,或者出于某种原因是否比另一个更可取。

编辑:

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

我原来的模式是:

(?=^a{3}$).*
^a{3}$

我最初的示例主题是:

zzz
aaa
bbb

像那样,我认为这两种模式都匹配“aaa”。

我知道第二个更快。还有其他区别吗?

4

2 回答 2

1

正如 Jerry 在评论中指出的那样,第二个匹配aaa bbb. 但是,我个人认为它会更简单\ba{3}\b.*

于 2013-12-19T17:26:18.747 回答
0

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

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

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

有些表达式确实花费了很多,所以在尝试选择正则表达式的最佳选择时,为什么要考虑更多?!

在正则表达式^a{3}$上,引擎会说:我是认真的!这很简单,很简单,有一个明显的匹配域。

然而,在第二个(?=^a{3}$).*引擎中并不意味着它。它可能有很多匹配的案例,它具有积极的前瞻性并消耗更多的资源。

现在,你会爱上哪一个?

于 2013-12-21T16:09:09.657 回答