12

オープンソース プロジェクトで警告をつぶそうとしていますが、

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

私に与えている

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

正規表現のどの部分が重複を引き起こしているかを自動的に指摘するツールはありますか?

4

2 に答える 2

6

ツールについてはわかりませんが、オーバーラップを見つけました: 、、および\sが含まれているため、パーツとオーバーラップしています。\t\f\n\r\x00-\x1f

したがって、Ruby 自体に「問題」が見つかったことを知らせる方法がない限り、この正規表現を次のように記述できます (途中で不要なバックスラッシュをすべて削除します)。

/[.,;:()\[\]{}<>"'`~\/|?!&@# \x00-\x1f\x7f]+/
于 2013-03-26T09:17:04.923 に答える
3

絶望的な状況に陥った場合は、Ruby ソースにデバッグ情報を出力して再構築することができると思います。:)これが警告がスローされる場所だと思います:

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

于 2013-03-26T09:38:00.743 に答える