我要修复一个存储大约200,000条记录的txt文件 每条记录应由逗号分隔8列。
但是,某些数据已损坏,导致额外的逗号。我需要摆脱可能在第3列中发生的额外逗号
5180,1103131373,Good Day,ABC,12,34,75484,7 / 1/2014 12:00:00 AM,< ---正确的格式 5180,1103131373,Good,Day,ABC,12,34,75484,7 / 1/2014 12:00:00 AM,< - 不正确
即。在这个例子中,Good Day应该存储在一列而不是两列中。
我可以通过正则表达式(.*,.*,.*),(.*,.*,.*,.*,.*,.*,)
找到它们
但是当我尝试使用\1\2
替换额外的逗号时,缺少一些记录
欢迎任何输入。提前致谢。
答案 0 :(得分:0)
您应该将.*
替换为[^,\r\n]*
,并在模式开始时添加^
。
使用
^([^,\r\n]*,[^,\r\n]*,[^,\r\n]*),([^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,)
并替换为\1\2
。
[^,\r\n]
否定字符类匹配除,
,CR和LF符号之外的任何字符。 \1
是对第1组(([^,\r\n]*,[^,\r\n]*,[^,\r\n]*)
)中值的反向引用,\2
是对第2组(([^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,[^,\r\n]*,)
)中值的反向引用。