我有以下字符串(这是一个字符串 - 我添加换行符只是为了便于阅读):
"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 查询中实现此功能。这是更复杂的解析语句的一部分。
请帮忙:)
您实际上有一个 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";""
由于每行末尾都有
;
,因此每行末尾都有空白字段。如果您不希望这样做,您可以删除输入中的尾随 ;
或测试输出中的空白字段。