我相信下面的两个正则表达式做同样的事情:
\ba{3}\b
(?=\ba{3}\b).*
两者都只匹配第二个单词(aaa):
zzz aaa bbb
我想知道在表现方面或任何其他方面之间是否存在任何差异,或者出于某种原因是否比另一方更为可取。
编辑:
上面的模式确实匹配不同的东西(“aaa”和“aaa bbb”)。对不起,我的错。
我原来的模式是:
(?=^a{3}$).*
^a{3}$
我原来的例子主题是:
zzz
aaa
bbb
就像我认为两种模式都匹配“aaa”。
据我所知,第二个更快。还有其他区别吗?
答案 0 :(得分:1)
正如Jerry在评论中指出的那样,第二个匹配aaa bbb
。但是,我个人认为它更简单,因为\ba{3}\b.*
答案 1 :(得分:0)
谈论正则表达式,我会想到三件事:
任何正则表达式与所需字符串匹配的简单性与其速度有直接关系,因此使用较少的表达式可以更快地搜索整个文本。
有些表达式真的花了很多钱,所以当你试图选择你的正则表达式的最佳选择时,你为什么要多考虑?!
在正则表达式^a{3}$
上,引擎会说: 我的意思是真的! 这是直截了当的,只有一个明显的匹配域。
然而,在第二个(?=^a{3}$).*
引擎中并不意味着它。它可能有很多匹配的情况,它有一个积极的前瞻和消耗更多的资源。
现在,你要去哪一个去爱?