ラベル Regexp の投稿を表示しています。 すべての投稿を表示
ラベル Regexp の投稿を表示しています。 すべての投稿を表示

2008年12月16日火曜日

グループ定義の均等化 Balancing group definition

グループ定義の均等化と言われても、何のことかさっぱり想像がつきませんが、.NET Frameworkの正規表現に不思議な機能があります。実際、役立つシーンがあります。
ネストされる()のペアを対応関係を維持しつつマッチさせたい、というときに使えます。具体的にはCの関数呼び出しやキャストなど。

(?:(?'Open'<)[^<>]*)+(?:(?'Close-Open'>)[^<>]*)+
丸括弧だと正規表現エスケープで読みづらくなるため山括弧の一致にしていますが、もちろん丸括弧でも対応できます。