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中文網其他相關文章!