ホームページ > バックエンド開発 > C++ > C# 正規表現で引用符内のカンマを使用して文字列を分割するにはどうすればよいですか?

C# 正規表現で引用符内のカンマを使用して文字列を分割するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-07 21:10:45
オリジナル
183 人が閲覧しました

How Can C# Regex Split Strings with Commas Inside Quotes?

C# 正規表現文字列分割: 引用符の外側のカンマ

従来のカンマベースの分割方法を使用すると、カンマが埋め込まれた文字列の処理が困難になる場合があります。この記事では、C# と正規表現を使用して、引用符で囲まれたカンマを含む文字列を分割する解決策を示します。

問題ステートメント:

SQL コード スニペットを表す次の文字列について考えてみましょう:

<code>('ABCDEFG', 123542, 'XYZ 99,9')</code>
ログイン後にコピー

目標は、この文字列を 3 つの異なる部分に分割することです:

  1. 'ABCDEFG'
  2. 123542
  3. 'XYZ 99,9'

3 番目のパラメータのカンマ (「XYZ 99,9」) は区切り文字とみなされるべきではないため、この問題が発生します。

正規表現ソリューション:

この問題を解決するには、偶数個の一重引用符が前にある場合にのみコンマと一致する正規表現を使用できます。このモードでは、引用符内のカンマが分割されません。

<code>",(?=(?:[^']*'[^']*')*[^']*$)"</code>
ログイン後にコピー

使用法:

<code class="language-csharp">var result = Regex.Split(sampleString, ",(?=(?:[^']*'[^']*')*[^']*$)");</code>
ログイン後にコピー

説明:

  • "," は文字列内の任意のカンマと一致します。
  • (?=( は先読みアサーションを開始します。
  • (?:[^']'[^']')* は、単一引用符文字が後に続く任意の数の非単一引用符文字のシーケンスに一致します。
  • [^']* は、単一引用符以外の任意の数の文字と一致します。
  • $ は文字列の末尾に一致します。

出力:

結果配列の出力は次のとおりです:

<code>{"'ABCDEFG'", "123542", "'XYZ 99,9'"}</code>
ログイン後にコピー

これは、引用符で囲まれた引数をそのまま維持しながら、引用符の外側のカンマに基づいて文字列を正常に分割することを示しています。

以上がC# 正規表現で引用符内のカンマを使用して文字列を分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート