用于自动简化正则表达式的工具

时间:2013-03-26 09:01:42

标签: ruby regex code-analysis

我正试图在开源项目中压制警告,

/[\.\,\;\:\(\)\[\]\{\}\<\>\"\'\`\~\/\|\?\!\&\@\#\s\x00-\x1f\x7f]+/

给了我

(irb):1: warning: character class has duplicated range

是否有任何工具可以自动指出正则表达式的哪些部分导致重叠?

2 个答案:

答案 0 :(得分:6)

我不知道任何工具,但我发现了重叠:\s包含\t\f\n\r,因此与\x00-\x1f部分重叠。

所以,除非有办法让Ruby本身告诉你它发现了一个“问题”,你可以把这个正则表达式写成(沿途删除所有那些不必要的反斜杠):

/[.,;:()\[\]{}<>"'`~\/|?!&@# \x00-\x1f\x7f]+/

答案 1 :(得分:3)

如果你达到了绝望的程度,我想你可以在Ruby源码中输出一些调试信息并重建。 :)我相信这是抛出警告的地方:

https://github.com/ruby/ruby/blob/trunk/regparse.c#L1787