就使用OR
、AND
运算符或背靠背字符类之间的效率而言。
在下面的字符串数据中。
1A
A1
$1
$$
以下表达方式:
^[\w\W][\w\W]$
^(?:\w|\W)(?:\w|\W)$
^[\w&&\W](?:[\w&&\W])$
一致性在这里会有什么影响,除了一个人想要的使用表达式的味道之外,这里真正的区别是什么?
发布于 2013-10-10 08:13:03
使用http://regex101.com/正则表达式调试器,您可以看到模式匹配的不同之处。主要的区别是速度:
^[\w\W][\w\W]$
需要6个步骤来匹配一个字符串^(?:\w|\W)(?:\w|\W)$
需要10个步骤来匹配一个字符串^[\w&&\W](?:[\w&&\W])$
需要8个步骤来匹配一个字符串当然,这在很大程度上取决于正则表达式、引擎的实现和可能的优化。
编辑
^..$
还需要6个步骤步骤的数量不一定与速度直接相关,但是在大多数情况下(如果正则表达式足够琐碎),可读性和可维护性更好的regex提供了比xy微秒节省速度更多的好处(同样取决于用例和输入数据)。
https://stackoverflow.com/questions/19300704
复制