首頁 >後端開發 >C++ >C# 正規表示式如何使用引號內的逗號分割字串?

C# 正規表示式如何使用引號內的逗號分割字串?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-07 21:10:45152瀏覽

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

C# 正規表示式字串分割:引號外的逗號

使用傳統的基於逗號的分割方法處理包含嵌入逗號的字串可能具有挑戰性。本文示範了一種使用 C# 和正規表示式分割包含可能被引號包圍的逗號的字串的解決方案。

問題陳述:

考慮以下表示 SQL 程式碼片段的字串:

<code>('ABCDEFG', 123542, 'XYZ 99,9')</code>

目標是將此字串分割成三個不同的部分:

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

由於第三個參數 ("XYZ 99,9") 中的逗號不應被視為分隔符,因此出現了挑戰。

正規表示式解:

為了解決這個問題,我們可以使用一個正規表示式,該表達式僅在前面有偶數個單引號時才符合逗號。此模式確保引號內的逗號不會被分割。

<code>",(?=(?:[^']*'[^']*')*[^']*$)"</code>

用法:

<code class="language-csharp">var result = Regex.Split(sampleString, ",(?=(?:[^']*'[^']*')*[^']*$)");</code>

解釋:

  • "," 符合字串中的任何逗號。
  • (?=( 開始一個先行斷言。
  • (?:[^']'[^']')* 符合任意數量的非單引號字元序列,後面跟著一個單引號字元。
  • [^']* 符合任意數量的非單引號字元。
  • $ 符合字串的結尾。

輸出:

result 陣列的輸出如下:

<code>{"'ABCDEFG'", "123542", "'XYZ 99,9'"}</code>

這示範了根據引號外的逗號成功分割字串,同時保持引號參數不變。

以上是C# 正規表示式如何使用引號內的逗號分割字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn