我有一个奇怪的情况,我需要拆分一个文本如下使用(,),但必须忽略逗号内的字符串。我使用regex模式,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)实现了它
现在的问题是我的文本包含字符串,但也包含一个单独的双引号(")。我不能更改文本,因为这些数据是由某些数据引擎生成的。
这是我的短信,需要分拆-
355,170102,204500,204509,10,“一些文本10”,"COM","COM",“未拆分”
请注意,在"SOME TEXT 10""中有一个额外的双引号,它不是成对的。因为这种拆分不适用于这种类型的文本。
我预计结果如下-
355
170102
204500
204509
10
"SOME TEXT 10"
"COM"
"COM"
"Not Split"但结果是-
355,170102,204500,204509,10,"SOME TEXT 10""
"COM"
"COM"
"Not Split"这是怎么弄到的?任何线索都将不胜感激。
发布于 2021-10-10 13:59:23
如果要将正则表达式更改为:
,(?=(?:[^"]*"[^"]*""?)*[^"]*$)它在字符串的结束双引号之后添加和附加的可选的",那么您将得到以下拆分:
355
170102
204500
204509
10
"SOME TEXT 10""
"COM"
"COM"
"Not Split"问题是"SOME TEXT 10""字符串,您可能可以使用该字符串。但是,如果您进一步修改regex以:
(?<=^[^"]*"[^"]*")",|,(?=(?:[^"]*"[^"]*""?)*[^"]*$)在",上,当它前面是输入和输出的第一个引号字符串时,它也会被拆分:
355
170102
204500
204509
10
"SOME TEXT 10"
"COM"
"COM"
"Not Split"https://stackoverflow.com/questions/69467030
复制相似问题