C# で正規表現を使用して文字列を分割する: 引用符内のカンマを処理する
データ解析や SQL 文字列操作などのさまざまなシナリオでは、カンマを含む文字列を正規表現を使用して分割する必要がある場合があります。ただし、カンマが引用符の内側と外側にある場合に問題が発生します。
次の文字列を考えてみましょう:
<code>('ABCDEFG', 123542, 'XYZ 99,9')</code>
私たちの目標は、正規表現を使用してこの文字列を構成部分に分割し、次の出力を取得することです:
重要なのは、引用符の外側にあるカンマを認識することです。これには、強力な正規表現パターン
を使用できます。<code>",(?=(?:[^']*'[^']*')*[^']*$)"</code>
このパターンを分析してみましょう:
"
: リテラルのカンマと一致します。
(?=(?:[^']*'[^']*')*[^']*$)
: これは、コンマの後に偶数の引用符が続くかどうかをチェックする先読みアサーションです。
(?:[^']*'[^']*')*
: 任意の数の一重引用符のペアと、その間にある内容を照合します。 [^']*$
: 最後の引用符の後の任意の文字と一致しますが、引用符は含まれません。 このパターンを使用すると、偶数の引用符が後に続く任意のカンマと一致し、引用符の外側の文字列のみを効果的に分割することができます。
分割にこの正規表現を使用するには、次の C# コードを使用します:
<code class="language-csharp">var result = Regex.Split(samplestring, ",(?=(?:[^']*'[^']*')*[^']*$)");</code>
このコードを実行すると、result
には文字列の配列が含まれます。各文字列は元の文字列のコンポーネントを表し、必要な条件に従って分割されます。
以上が正規表現を使用して C# で文字列を分割し、引用符内のカンマを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。