我想壁球警告在一个开源项目,并工具自动简化正则表达式
/[\.\,\;\:\(\)\[\]\{\}\<\>\"\'\`\~\/\|\?\!\&\@\#\s\x00-\x1f\x7f]+/
是给我
(irb):1: warning: character class has duplicated range
是否有任何工具,可以自动指出的哪些部位正则表达式导致重叠?
我想壁球警告在一个开源项目,并工具自动简化正则表达式
/[\.\,\;\:\(\)\[\]\{\}\<\>\"\'\`\~\/\|\?\!\&\@\#\s\x00-\x1f\x7f]+/
是给我
(irb):1: warning: character class has duplicated range
是否有任何工具,可以自动指出的哪些部位正则表达式导致重叠?
我不知道任何工具,但我发现重叠:\s
包含\t
,\f
,\n
和\r
,使之与\x00-\x1f
部分重叠。
所以,除非有办法让红宝石本身要告诉你,它发现了一个“问题”,你可以写这个表达式为(除去沿途所有这些不必要的反斜线):
/[.,;:()\[\]{}<>"'`~\/|?!&@# \x00-\x1f\x7f]+/
如果你曾经达到过这种绝望的境地,我想你可以在Ruby源代码中输出一些调试信息并重新编译。 :)我相信这是在警告被抛出的地方:
相关门票:http://bugs.ruby-lang.org/issues/show/1831 – Stefan 2013-03-26 09:46:20
扩展范围'\ x00- \ x20'是另一种选择,包括'space'。 – Stefan 2013-03-26 09:20:38