C# Regex 使用定界符拆分行,但忽略引号内的定界符
C# Regex to split row with delimiter, but ignore delimiter inside quotes
我收到很多文件,我对这些文件的控制为零,我需要根据分隔符进行拆分。
但是当定界符在引号内时,我不想拆分。
所以,column1, column2, column3 是
column1
column2
column3
然而
column1, "column2," column3 是
column1
"column2," column3
这可以使用此 RegEx(在 C# 下)
((?<=\")[^\"]*(?=\"(,|$)+)|(?<=,|^)[^,\"]*(?=,|$))
现在,我的问题是当一行只有一个双引号(仅打开或关闭)
例如 column1, column2", column3
returns
column1
column3
应该return
column1
column2"
column3
我发现了很多与 RegEx 相关的内容,但在上面的特定示例中都失败了。
您可以使用
匹配您需要的所有字段
Regex.Matches(text, "(?:\"[^\"]*\"|[^,])+|(?<![^,])(?![^,])")
见regex demo。 详情:
(?:\"[^\"]*\"|[^,])+
- 出现一次或多次
"[^"]*"
- 一个 "
,除 "
之外的零个或多个字符,然后是一个 "
(如果里面可以有 ""
,替换"[^"]*(?:""[^"]*)*"
)
|
- 或
[^,]
- 除了 ,
之外的任何字符
|
- 或
(?<![^,])(?![^,])
- 位于字符串开头或紧跟逗号的位置,以及位于末尾或紧跟逗号的位置。
我收到很多文件,我对这些文件的控制为零,我需要根据分隔符进行拆分。 但是当定界符在引号内时,我不想拆分。 所以,column1, column2, column3 是
column1
column2
column3
然而 column1, "column2," column3 是
column1
"column2," column3
这可以使用此 RegEx(在 C# 下)
((?<=\")[^\"]*(?=\"(,|$)+)|(?<=,|^)[^,\"]*(?=,|$))
现在,我的问题是当一行只有一个双引号(仅打开或关闭) 例如 column1, column2", column3 returns
column1
column3
应该return
column1
column2"
column3
我发现了很多与 RegEx 相关的内容,但在上面的特定示例中都失败了。
您可以使用
匹配您需要的所有字段Regex.Matches(text, "(?:\"[^\"]*\"|[^,])+|(?<![^,])(?![^,])")
见regex demo。 详情:
(?:\"[^\"]*\"|[^,])+
- 出现一次或多次"[^"]*"
- 一个"
,除"
之外的零个或多个字符,然后是一个"
(如果里面可以有""
,替换"[^"]*(?:""[^"]*)*"
)|
- 或[^,]
- 除了,
之外的任何字符
|
- 或(?<![^,])(?![^,])
- 位于字符串开头或紧跟逗号的位置,以及位于末尾或紧跟逗号的位置。