编辑:任何人都可以帮助我的字符串正则表达式,如本?:如何用','拆分字符串,除非','在括号内使用Regex?
[Header 1], [Head,er 2], Header 3
,这样我可以分裂成大块像这样:
[Header 1]
[Head,er 2]
Header 3
我已经得到了这个:
(?<=,|^).*?(?=,|$)
哪位能给我:这个问题的
[Header 1]
[Head
,er 2]
Header 3
编辑:任何人都可以帮助我的字符串正则表达式,如本?:如何用','拆分字符串,除非','在括号内使用Regex?
[Header 1], [Head,er 2], Header 3
,这样我可以分裂成大块像这样:
[Header 1]
[Head,er 2]
Header 3
我已经得到了这个:
(?<=,|^).*?(?=,|$)
哪位能给我:这个问题的
[Header 1]
[Head
,er 2]
Header 3
在这种情况下,在分隔符(逗号)上拆分比在符合记号(或块)上更容易。标识是分隔符的逗号需要一个相对简单的前瞻:
,(?=[^\]]*(?:\[|$))
每次找到一个逗号的时候,你的三件事情做一个的预计。如果首先找到方括号,逗号就在一对括号内,所以它不是分隔符。如果你找到一个左括号或行/字符串的末尾,它是一个分隔符。
的变化已经被讨论过。
例如:
简短的回答:正则表达式也有可能不是这个合适的工具。编写一个合适的解析器。 FSM的实现是easy。
难道不是这么简单吗?
(?<=,|^)(?:[^,]|\[[^[]*\])*
当我使用您的正则表达式时,我得到以下形式的开发工具:语法错误:无效正则表达式:/(?<=,| ^) (?:[^,] | \ [[^ [] * \])* /:无效组 – starbeamrainbowlabs 2013-01-04 18:47:27
(?<=,|^)\s*\[[^]]*\]\s*(?=,|$)
使用[
和]
分隔符,你的优势
您既可以使用正则表达式的值相匹配的括号内:
\[[^\]*]\]
或者你用这个正则表达式分割托架列表(使用环视断言):
(?<=]|^)\s*,\s*(?=\[|$)
世界需要人类的CSV如何实现? – 2009-04-08 21:55:26
这是一个功课题吗?因为我发现使用普通的旧操作更简单 - 基本上:每个char: :如果char是逗号而不是在括号内,则将当前字符串添加到列表 – 2009-04-08 22:11:02