perlでは、以下は一致と一致したグループのリストを返すようです!
//g
ルール:
リストコンテキストで
//g
は、一致するグループのリストを返します。グループがない場合は、正規表現全体に一致するリストを返します。
グループ化せずに一致のリストを取得するにはどうすればよいですか?
アップデート:
perlでは、正規表現は、囲まれた正規表現部分と一致するものすべてに()
加えて、用語全体と一致するものを返すようです。
グループ化(キャプチャではない)の目的で、たとえば、一致する「猫」または「犬」を作成するには、を使用します(?:cat|dog)
。and notを
使用すると、「cat」または「dog」の出現が結果リストに追加されます。(cat|dog)
(?:cat|dog)
一致する括弧:()
"badcat and baddog" =~ /bad(cat|dog)/g
結果:(badcat baddog cat dog)
単一cat
で、一致する括弧dog
で囲まれているため、結果リストに追加されます
一致しない括弧:(?:)
"badcat and baddog" =~ /bad(?:cat|dog)/g
結果:(badcat baddog)