用于替换CSV文件中第10个逗号分隔列的正则表达式

时间:2015-09-04 06:06:27

标签: regex csv sublimetext

我有一些包含数万行格式的文件:

value1, value2, value3, value4, value5, value6, value7, value8, value9, value10
value1, value2, value3, value4, value5, value6, value7, value8, value9, value10
value1, value2, value3, value4, value5, value6, value7, value8, value9, value10

我想将value10替换为一定数量(例如x)。所以结果应该是:

value1, value2, value3, value4, value5, value6, value7, value8, value9, x
value1, value2, value3, value4, value5, value6, value7, value8, value9, x
value1, value2, value3, value4, value5, value6, value7, value8, value9, x

我想用正则表达式来做这件事。我有Sublime Text作为文本编辑器。

2 个答案:

答案 0 :(得分:5)

您可以使用此正则表达式进行搜索:

^((?:[^,]+,\s*){9})[^,]+

并替换使用:

$1x

((?:[^,]+,\s*){9})将匹配并分组您可以在反向引用$1中使用的前9个逗号分隔值。括号外的[^,]+将匹配要替换的第10个值。

RegEx Demo

PS:验证后引用也适用于Sublime Test 3

答案 1 :(得分:5)

^(?:[^,]+,\s*){9}\K[^,]+

您可以使用\K放弃9次匹配,然后替换10th。请参阅演示。

https://regex101.com/r/kN5uS9/3

enter image description here