C#の正規表現における置換(Substitution)の使い方を解説
正規表現による置換(Substitution)とは
正規表現とは、入力テキストと照合されるパターンのことです。文字・演算子・構成要素など、さまざまなカテゴリの要素を組み合わせて正規表現を定義できます。その中でも「置換(Substitution)」は置換パターン(replacement pattern)の中で使用される特別な要素で、Regex.Replaceメソッドなどによってマッチした文字列を別の文字列へ置き換える際に活用されます。
なお、これらの置換要素は検索用の正規表現パターン内では認識されず、置換パターン内でのみ有効になる点に注意してください。
置換要素の一覧
下の表に、C#の正規表現で利用できる主な置換要素と、それぞれの動作例をまとめました。
| 置換要素 | 説明 | パターン | 置換パターン | 入力文字列 | 結果の文字列 |
|---|---|---|---|---|---|
| $number | 指定した番号のキャプチャ グループに一致した部分文字列に置き換えます。 | \b(\w+)(\s)(\w+)\b | $3$2$1 | "one two" | "two one" |
| ${name} | 指定した名前のキャプチャ グループ(名前付きグループ)に一致した部分文字列に置き換えます。 | \b(?<word1>\w+)(\s)(?<word2>\w+)\b | ${word2} ${word1} | "one two" | "two one" |
| $$ | リテラルの「$」に置き換えます。 | \b(\d+)\s?USD | $$$1 | "103 USD" | "$103" |
| $& | 一致した文字列全体のコピーに置き換えます。 | (\$*(\d*(\.+\d+)?){1}) | **$& | "$1.30" | "**$1.30" |
| $` | 入力文字列のうち、一致箇所より前にあるすべてのテキストに置き換えます。 | B+ | $` | "AABBCC" | "AAAACC" |
| $' | 入力文字列のうち、一致箇所より後にあるすべてのテキストに置き換えます。 | B+ | $' | "AABBCC" | "AACCCC" |
| $+ | 最後にキャプチャされたグループの内容に置き換えます。 | B+(C+) | $+ | "AABBCCDD" | "AACCDD" |
| $_ | 入力文字列全体に置き換えます。 | B+ | $_ | "AABBCC" | "AAAABBCCC" |
C#コードでの使用例
実際にRegex.Replaceメソッドで置換パターンを使用すると、次のようになります。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "one two";
string pattern = @"\b(\w+)(\s)(\w+)\b";
// $number を使って単語の順序を入れ替える
string result = Regex.Replace(input, pattern, "$3$2$1");
Console.WriteLine(result); // 出力: two one
}
}
各置換要素のポイント
- $number:グループ番号は1から始まり、0は一致全体を表します。
- ${name}:番号参照との混同を避けたい場合や可読性を高めたい場合に、名前付きグループ参照が便利です。
- $$:置換結果にドル記号そのものを出力したいときに使用します。
- $`・$':一致箇所の前後のテキストを挿入できるため、文字列の複製や再配置に役立ちます。
置換要素を組み合わせることで、単純な文字列の置き換えから複雑なフォーマット変換まで柔軟に対応できます。用途に応じて適切な置換要素を選択しましょう。
-
JavaScriptの正規表現修飾子(g・i・m)をサンプルコード付きで解説
JavaScriptの正規表現修飾子とは JavaScriptの正規表現における修飾子(フラグ)とは、パターンリテラルの末尾に付加することで検索の挙動を変更できる、省略可能な指定のことです。これを使うことで、大文字と小文字を区別しない検索や文字列全体を対象としたグローバル検索などが簡単に実現できます。さらに、複数の修飾子を組み合わせて指定することも可能です。 主な修飾子の一覧 修飾子説明 gグローバルマッチングを有効にします。最初の一致で処理を止めず、マッチしたすべての結果を返します。 i大文字と小文字を区別しない(ignore case)マッチングを有効にします。 m複数行(mul
-
Pythonの正規表現構文をわかりやすく解説!基本の仕組みと主な構文要素
正規表現とは? 正規表現(Regular Expression)とは、文字列の中から特定のパターンを検索・置換するために用いられる、特殊な記号と文字の組み合わせです。テキスト処理やログ解析、データクレンジングなど、さまざまな場面で活用されています。 Python正規表現を構成する2種類の文字 Pythonの正規表現構文は、主に以下の2種類の文字で構成されます。 1. メタ文字(Meta Characters) メタ文字とは、特別な意味を持つ記号のことです。ワイルドカードにおける「*」のように、通常の文字としてではなく、パターンを表現するための役割を果たします。代表的なメタ文字には以下のよう