我有一个文件,其中包含用分号分隔的字符串列表,如下所示:
aaaa;bbb;ccccccc;dd;
eeee;fff;ggggggg;hh;
iiii;jjj;kkkkkkk;ll;
并正在寻找一个正则表达式来替换每行的第 n 个元素(使用 Notepad++ v6.8.3,正则表达式引擎主要遵循 Perl 语法)。我相信这个表达式
^([^\;]*\;){n}([^;]*)
其中 n 为数字,将捕获直到第 n 个分号的所有内容。我需要用什么来替换它才能仅更改每行的第 n 个条目?
举个例子:如果 n=3,我想要一个正则表达式和替换来获得
aaaa;bbb;xxxxxxx;dd;
eeee;fff;xxxxxxx;hh;
iiii;jjj;xxxxxxx;ll;
答案1
搜索:
^((?:[^;]*;){2})([^;]*;)([^;]*)
代替:
\1xxxxxx;\3
我的改变:
- 使用量词非捕获 (
?:
) 创建组,并在其周围添加捕获组,以一次性捕获所有内容 - 更改
n
为n-1
并复制内部组以单独([^;]*;)
捕获第 n 个组 - 删除了一些多余的转义