我被要求使用正则表达式来解析使用.NET的分隔字符串。分隔字符串也可能具有双引号限定内容。
我想出了以下表达式:
(?<=^|\,)(.*?)(?=\,|$)
感觉它几乎就在那里。针对以下测试数据运行此表达式:
,test 1, "{test""100,000.0"" 2}", test 3,
的产率:
<empty>
test 1
"{test""100
000.0"" 2}"
test 3
<empty>
因此,除了双引号限定内容外,它看起来有效。
我找到了搜索并尝试了其他一些建议,但没有找到任何有效的方法。
我没有抓住它们,但是如果它更容易包含分隔符和限定符就可以了。
答案 0 :(得分:1)
此正则表达式捕获您的目标字词:
(?<=^|,)((?:,(?!(?:(?:[^"]*"){2})*[^"]*$)|[^,])*)
见live demo,显示捕获:
<empty>
test 1
"{test""100,000.0"" 2}"
test 3
<empty>
这会捕获非逗号或逗号(使用前瞻),后跟偶数引号数(引号内的逗号后跟奇数号引号)。
答案 1 :(得分:0)
您可以使用正则表达式来否定&#39;,&#39;并在连续的&#39;,#39;之间提取字符串。
您可以使用表达式&#34;([^,] *)&#34;。
中验证了相同内容答案 2 :(得分:0)