2011-12-20 155 views
0

我必須打破圍繞引號部分字符串(「「」)使用正則表達式之外,我可以使用一個字符串分割像正則表達式打破裏面的字符串和引號

// Split the string c using " as a delimiter   
string [] pieces = c.split('"'); 

但它會打破字符串圍繞引號,並且不會告訴哪些部分位於引號內,哪些部分位於引號外部,因此我需要知道,因爲我正在處理它們兩個,我需要類似Regex.Match和Regex.Split的組合。

謝謝

Sid

+0

請提供一些示例性的輸入和所希望的輸出。 – 2011-12-21 00:15:26

回答

0

再次normal* (special normal*)*模式來救援!

循環輸入"([^"]*(?:\\"[^"]*)*)"並捕獲第一組。

  • 正常:[^"]
  • 特殊:\\"

而且它甚至會採取引用雙引號,像 「A \」 B 「甚至是 」\「」,甚至是空的字符串「」。

(注意(?:...)是非捕獲組)

+1

我認爲你的意思是'「[^」\\] *(?:\\。[^「\\] *)*」'([ref](http://books.google.com/books?id= NYEX-Q9evKoC&PG = PA264&DQ =真實+%E2%80%9Cunrolling半實物%E2%80%9D +圖案&HL = EN&SA = X&EI = DyvxToPuM5SNigLb_ZzMDg&VED = 0CDEQ6AEwAA#v = onepage&q =真實%20%E2%80%9Cunrolling-the-環路%E2%80%9D%20pattern&F =假))。作爲C#逐字字符串,這將是'@「」「[^」「\\] *(?:\\。[^」「\\] *)*」「」'。但是這只是爲了*匹配*一個字符串文字;顯然,這只是OP想要做的一部分。 – 2011-12-21 00:42:21

相關問題