我有一个CSV文件,其数据以分号分隔。在文件的最后一列中,我有一个用逗号分隔的数字列表。我不想用分号替换这些逗号,所以它们就成了他们自己的专栏。
如何匹配每行上最后一个分号后的每个逗号?我不能用分号替换所有逗号,因为文件中的其他一些列也包含逗号。
我正在尝试在Notepad ++中替换它们。
189;1;data here, can contain commas;311,232,161,132,371
应该成为
189;1;data here, can contain commas;311;232;161;132;371
答案 0 :(得分:3)
您可以使用以下内容:
(?:;(?!.*;)|(?!^)\G)[^,]*\K,
替换为:
;
;(?!.*;)
与上一个;
匹配。它是;
,后面没有其他;
。
(?!^)\G
用于在上一场比赛结束时进行匹配。
(?:;(?!.*;)|(?!^)\G)
表示匹配上一个;
或上一场比赛的开头。
[^,]*
将匹配非逗号,最后,\K
会重置匹配项,以便您只匹配逗号。
注意:并非所有版本的Notepad ++都支持\G
和\K
(我不记得确切地实现了哪一个,可能是\G
)。
以上更多......你所描述的。解决方法可能是这样的:
,(?!.*;)
匹配未提前,
的{{1}}。并替换为;
。
答案 1 :(得分:3)
此正则表达式匹配逗号之间没有分号的逗号:
,(?=[^;]*$)
如果要删除此类逗号,请将匹配替换为空白。