我正试图在开源项目中压制警告,
/[\.\,\;\:\(\)\[\]\{\}\<\>\"\'\`\~\/\|\?\!\&\@\#\s\x00-\x1f\x7f]+/
给了我
(irb):1: warning: character class has duplicated range
是否有任何工具可以自动指出正则表达式的哪些部分导致重叠?
答案 0 :(得分:6)
我不知道任何工具,但我发现了重叠:\s
包含\t
,\f
,\n
和\r
,因此与\x00-\x1f
部分重叠。
所以,除非有办法让Ruby本身告诉你它发现了一个“问题”,你可以把这个正则表达式写成(沿途删除所有那些不必要的反斜杠):
/[.,;:()\[\]{}<>"'`~\/|?!&@# \x00-\x1f\x7f]+/
答案 1 :(得分:3)
如果你达到了绝望的程度,我想你可以在Ruby源码中输出一些调试信息并重建。 :)我相信这是抛出警告的地方: