正規表現の(?:)

著者:杉浦

正規表現の(?:)

 (?:)は(?:)で括られたグループは後方参照されないという記号です。後方参照は便利ですが、()もそれ以上に便利で多用しがちです。()が増えるとどこに何が格納されるかわかりにくくなりとても面倒です。(?:)ですっきりする例を挙げます。

 <([a-z])(?:(\s[^>]+)?)>(.*)<\/\1>

 HTMLやXMLの様なタグに使えそうな正規表現です。使えそうというのは、この表現は記事を書いている時の思い付きであり、私自身使ってないからです。.*はバグの温床です。これを(?:)抜きで状態遷移図っぽく可視化すると
 
 (?:)を使って可視化すると

 となります。前者のgroup2はいらない感じがしますが、後者では見事に消えています。

  • この記事いいね! (0)

著者について

杉浦 administrator