C# 正規表現: 区切り文字の違い
PHP や JavaScript などの言語とは異なり、C# の正規表現では区切り文字を使用しません。 この構文の違いにより、正規表現コードを他の言語から移植する場合は、アプローチを変更する必要があります。
具体例
英数字以外の文字を削除することを目的とした正規表現の例を見てみましょう:
<code class="language-csharp">string name = "dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487"; string result = Regex.Replace(name, @"/\W/g", ""); //Incorrect C# syntax</code>
上記のコードは、区切り文字 (/
) を使用する他の言語では機能しますが、C# では予期した結果が得られません。
正しい C# 実装
区切り文字を削除して望ましい結果を達成する同等の C# コードは次のとおりです。
<code class="language-csharp">string name = "dr-det-fb.ydp.eu/ebook/trunk/annotations/ctrl.php/api1751-4060-1193-0487"; string result = Regex.Replace(name, @"\W", ""); //Correct C# syntax</code>
C# では、文字列リテラルの前にある @
記号は、そのままの文字列リテラルを意味し、エスケープ シーケンスの解釈を防ぎます。 これは、正規表現パターンを正しく処理するために非常に重要です。
区切り文字機能の明確化
区切り文字を使用する言語では、区切り文字は正規表現パターンの開始と終了をマークする役割を果たします。 これらは照合ロジック自体の一部ではありません。 C# ではこの区切り文字構文が省略され、式の構造が簡素化されます。
C# は RegexOptions
を使用して、大文字と小文字を区別しない一致や複数行モードなどの修飾子を管理し、他の言語の区切り文字に関連付けられることが多いインライン修飾子と同様の機能を提供します。 ただし、コアの正規表現パターンは区切り文字の概念から独立したままです。
以上がRegex 区切り文字が C# の正規表現で機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。