从双引号引起来的字符串中删除所有出现的特定字符

问题描述 投票:0回答:1

我有以下字符串(这是一个字符串 - 我添加换行符只是为了便于阅读):

"someField0";"some value1; some value2; some value3; some value4";
"someField1";"some value1; some value2; some value3";
"someField2";"some value1; some value2";
"someField3";"some value123";

我需要消除任何出现的 ;使用正则表达式/替换引用部分的字符。 期望的结果如下:

"someField0";"some value1 some value2 some value3 some value4";
"someField1";"some value1 some value2 some value3";
"someField2";"some value1 some value2";
"someField3";"some value123";

是否可以仅使用带有替换的正则表达式来实现此目的?

我找到了如下几种解决方案,但它们都只能删除一种情况。

("[^",]+);([^"]+")

然后替换为

$1 $2

我正在寻找基于纯正则表达式的解决方案,因为我需要使用 regex_replace 函数在 SQL 查询中实现此功能。这是更复杂的解析语句的一部分。

请帮忙:)

sql regex regexp-replace
1个回答
0
投票

您实际上有一个 CSV 文件。由于 Python 有一个非常强大的 csv 解析器,请尝试一下:

import csv 
from io import StringIO 

txt='''\
"someField0";"some value1; some value2; some value3; some value4";
"someField1";"some value1; some value2; some value3";
"someField2";"some value1; some value2";
"someField3";"some value123";
'''

r=csv.reader(StringIO(txt), delimiter=';')

for row in r:
    print(';'.join([f"\"{s}\"" for s in row]))

打印:

"someField0";"some value1; some value2; some value3; some value4";""
"someField1";"some value1; some value2; some value3";""
"someField2";"some value1; some value2";""
"someField3";"some value123";""

由于每行末尾都有

;
,因此每行末尾都有空白字段。如果您不希望这样做,您可以删除输入中的尾随
;
或测试输出中的空白字段。

© www.soinside.com 2019 - 2024. All rights reserved.