2011-10-19 223 views
1

我在我的智慧結束(是一個正則表達式新手)。我需要拆分的字符串這樣正則表達式分割字符串

"abc","","av,as","hello world","nice,name" 

'abc' 
'\blank\' 
'av,as' 
'hello world' 
'nice,name' 

使用C#或excel vbs的,可以有人用正則表達式表達幫助嗎?

+3

這看起來像是在嘗試使用CSV文檔。我建議爲此使用一個庫(參見http://secretgeek.net/csv_trouble.asp) –

+1

您遇到問題。 「我將用正則表達式來解決它!」現在你有兩個問題。 – CanSpice

+0

我不認爲正則表達式是這樣的。我會遍歷字符串查找打開和關閉引號。 –

回答

2

相當簡單:如圖所示

"(\\.|[^"\\])*" 

將工作:

Comma-delimited list of quoted strings

它將允許轉義引號和報價之間可能存在的空白,並且是符合POSIX標準,應你永遠需要那個!

編輯

我也許應該注意,基本上不會有可能得到'\blank\'你從正則表達式引擎指定直接,但會比較瑣碎從代碼中得到它來檢查的如果是少於三個字符長(如匹配,將""如果有一個空字符串)

END EDIT

匹配的長度和替換它10

請問你是否想讓我分解這個表情!

+0

+1 - 看起來像處理所有情況。 –

+0

完美的解決方案。工作得很好。謝謝。 –

2

我認爲你應該使用

"(.*?)",? 

正則表達式

實施例:http://regexr.com?2uvk8

+0

不會找到轉義引號,也不會忽略內部逗號。 –

+0

大多數作品,但如傑西所說,並不完全是愚蠢的。但謝謝你的答案。 –

0
(?:"((?:[a-z])+(?:[ ,a-z]+))")?("")? 

可用於

如果組1和2 emtpy,則相匹配的,如果組1有一個值匹配一個字符串,並且組2有一個值你匹配emtpy雙引號""

但是,是爲說,你應該使用速度與精確度分析器...

相關問題