における数量詞として使用される場合今日、私は次の正規表現に出くわしたとRubyがそれでどうなるのか知りたいと思った:意味は、後者は、正規表現
> "#a" =~ /^[\W].*+$/
=> 0
> "1a" =~ /^[\W].*+$/
=> nil
この場合、Rubyは+
文字を無視しているようです。それが間違っている場合、私はそれが何をしているのか分かりません。私は*
がエスケープされておらず、量子として使用されているので、それが量子として解釈されていないと推測しています。 Perl/Rubyの正規表現では、特殊文字として解釈できない文脈で文字(例:-
)が使用されるときに、リテラルとして扱われます。しかし、この場合は、lvalue文字列に+
が存在しないため、最初の一致が失敗することが予想されます。
これは+
文字を微妙に正しく使用していますか?上記の動作はバグですか?私は明白な何かを欠いていますか
どこにこの正規表現がありますか? –
私の仕事の中で遭遇した第三者のセキュリティコンテンツ。私は正規表現は作者が意図したものではないと思っていますが、Rubyの動作を見たとき、私はこの仮定について疑問を持ち始めました。 –