--- lang: ja-jp breaks: true --- # C# 文字列内で正規表現に最初に一致した箇所を置換した結果の文字列を取得 2025-07-06 ## 概要 指定した文字列から正規表現に最初に一致した部分を使い、置換パターンに基づいて新しい文字列を生成するヘルパーメソッド。 一致が見つからなかった場合は、元の文字列ではなく null を返す点が特徴。これにより、変換が成功したか否かを明確に判別できる。 ```csharp= /// <summary> /// 文字列内で正規表現に最初に一致した箇所を置換した結果の文字列を取得します。 /// </summary> /// <param name="str">検索対象の文字列。</param> /// <param name="pattern">正規表現パターン。</param> /// <param name="replacement">置換文字列。</param> /// <param name="options">正規表現のオプション。</param> /// <returns>最初の置換結果の文字列。一致が見つからない場合は null。</returns> static string? TryGetFirstReplacementResult( string str, string pattern, string replacement, RegexOptions options = RegexOptions.None ) { // 入力文字列やパターンがnullまたは空の場合は、何もせずnullを返す if (string.IsNullOrEmpty(str) || string.IsNullOrEmpty(pattern)) { return null; } // Regex.Matchは最初に見つかった一致のみを返す Regex regex = new Regex(pattern, options); Match match = regex.Match(str); // 一致が見つかった場合のみ、置換後の文字列を生成して返す if (match.Success) { // match.Result() を使って置換パターンを適用した文字列を取得 return match.Result(replacement); } // 一致が見つからなかった場合はnullを返す return null; } ``` :::info ポイント: 標準の Regex.Replace は一致しない場合に元の文字列を返すが、このメソッドは null を返す。そのため、if文で null かどうかをチェックするだけで、後続処理を安全に分岐させることができる。 ::: ###### tags: `C#` `正規表現` `置換` `タグ付き置換`