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