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

And*_*imm 12 ruby regex code-analysis

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

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

给了我

(irb):1: warning: character class has duplicated range
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*ker 6

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

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

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

  • 将范围扩展到`\ x00-\x20`是包含`space`的另一种选择. (3认同)