2011-10-19 230 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双引号""

但是,是为说,你应该使用速度与精确度分析器...

相关问题