就使用OR
,AND
运算符或背靠背字符类之间的效率而言。
在下面的字符串数据中。
1A
A1
$1
$$
以下表达式:
^[\w\W][\w\W]$
^(?:\w|\W)(?:\w|\W)$
^[\w&&\W](?:[\w&&\W])$
这里的一致性如何影响,除了个人使用表达式的个人风格之外,这里有什么区别?
答案 0 :(得分:3)
使用http://regex101.com/正则表达式调试器,您可以看到模式匹配方式的差异。主要区别在于速度:
^[\w\W][\w\W]$
需要6个步骤来匹配您的一个字符串^(?:\w|\W)(?:\w|\W)$
需要10个步骤来匹配您的一个字符串^[\w&&\W](?:[\w&&\W])$
需要8个步骤来匹配您的一个字符串当然,这在很大程度上取决于正则表达式的风格,引擎的实现以及可能的优化。
修改强>:
^..$
还需要6个步骤步骤的数量并不一定与速度直接相关,但在大多数情况下(如果正则表达式足够简单),可读且更易于维护的正则表达式提供了比xy微秒的速度节省更多的好处(再次取决于用例和输入数据)。