Regex 风味与效率
就使用Regex 风味与效率,regex,Regex,就使用或、和运算符或背对背字符类之间的效率而言 在下面的字符串数据中 1A A1 $1 $$ 下列用语: ^[\w\W][\w\W]$ ^(?:\w|\W)(?:\w|\W)$ ^[\w&&\W](?:[\w&&\W])$ 一致性在这里会产生什么影响?除了个人希望使用表达式的风格之外,这里的真正区别是什么?使用regex调试器,您可以看到模式匹配方式的差异。主要区别在于速度: ^[\w\w][\w\w]$需要6个步骤来匹配其中一个字符串 ^(?:\w |
或
、和
运算符或背对背字符类之间的效率而言
在下面的字符串数据中
1A
A1
$1
$$
下列用语:
^[\w\W][\w\W]$
^(?:\w|\W)(?:\w|\W)$
^[\w&&\W](?:[\w&&\W])$
一致性在这里会产生什么影响?除了个人希望使用表达式的风格之外,这里的真正区别是什么?使用regex调试器,您可以看到模式匹配方式的差异。主要区别在于速度:
需要6个步骤来匹配其中一个字符串^[\w\w][\w\w]$
需要10个步骤来匹配其中一个字符串^(?:\w |\w)(?:\w |\w)$
需要8个步骤来匹配其中一个字符串^[\w&&\w](?:[\w&&\w])$
还需要6个步骤^..$
步骤的数量不一定与速度直接相关,但是在大多数情况下(如果正则表达式足够简单),可读性和可维护性更好的正则表达式比xy微秒的速度节省带来更多好处(同样取决于用例和输入数据)。IMHO,这里唯一显著的区别是第一种方法读写速度更快<代码>;)@sp00m不是更快吗=p第一个较短,但在我看来3个都很疯狂。您最好编写如下内容:
^(?s)$
或^[\s\s]{2}$
。