()
および(?<name>)
ではグループ番号やグループ名を与えたグループ化がなされますが、正規表現要素(?:)
を使うと、グループ番号やグループ名を持たないグループ(キャプチャされないグループ・非キャプチャグループ)を構成することができます。 非キャプチャグループは、例えば正規表現を記述する上で()
を使いたいが、Match.Groupsプロパティ等で処理する必要のない・除外したいグループを構成したいような場合に用いることができます。
次の例では、yyyy-mm-dd形式またはyyyy/mm/dd形式の日付にマッチする文字列を探索し、yyyy年mm月dd日の形式に置換しています。 この際、区切り文字の正規表現(/|-)
を非キャプチャグループとすることでグループ化から除外しています。 これにより、年・月・日のそれぞれ対応するグループのみにグループ番号1・2・3が割り当てられます。