浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

正規表現の(?:)

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

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

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

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

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