2012-01-13 10 views
7

これを取得しようとしているIm Ruby code beautifier正直なところ、正規表現と関係する問題が発生しました。限られたRuby/Regexエラー:警告:文字クラスの範囲が重複しています

Imが取得するエラーは次のとおりです。

この行を指す
warning: character class has duplicated range: /.*=\s*<<-?\s*([_|\w]+).*/ 

here_doc_term = tline.sub(%r{.*=\s*<<-?\s*([_|\w]+).*},"\\1") 

誰かが親切にも問題はこの表現であるかを指摘してくださいだろうか?

ありがとうございました。

+1

'\ w'にはすでに' _'が含まれています。多分あなたの問題です。 –

+0

それはまさに問題でした、お元気ですか、それを答えとして提出したいのですか? – Andrew

+1

本当に '|'とマッチすることを意味していますか?もしそうでなければ、文字クラスの '|'はリテラル '|'にマッチするので有害です。また、必要なシーケンスのみを照合する場合は、先頭または末尾に '。* 'を入れる必要はありません。 – fge

答えて

8

基本的にこの警告は、使用している文字クラスに冗長パターンがあることを示しています。 \wには既に下線が含まれているので、[_|\w]を指していると仮定します。

This discussionもっと理解を深めることができます。

+0

ああ、誰かが既にコメントでそれを指摘した、申し訳ありませんが、それを見ていない。 – trueunlessfalse

+0

ありがとうございました! – Andrew

関連する問題