Notepad ++动态替换

时间:2018-01-11 19:37:54

标签: notepad++

我需要替换这一行:

tvec.at(21).interrupt();

这一行:

if (thr_ev_21.get()) thr_ev_21->interrupt();

我有很多这些不同数字的线(即22,23,24等)

Notepad ++(v7.5.3)中是否有一种方法可以动态替换:

tvec.at(X).interrupt();

- >

if (thr_ev_X.get()) thr_ev_X->interrupt();

2 个答案:

答案 0 :(得分:1)

  • 控制 + ħ
  • 找到:tvec\.at\((\d+)\).interrupt\(\);
  • 替换为:if \(thr_ev_$1.get\(\)\) thr_ev_$1->interrupt\(\);
  • 检查环绕
  • 检查正则表达式
  • 全部替换

<强>解释

tvec\.at\(          : literally, dot and parenthesis have to be escaped
(\d+)               : group 1, 1 or more digits
\).interrupt\(\)    : literally, dot and parenthesis have to be escaped

注意:

使用Notepad ++,必须在替换部分中转义括号。

答案 1 :(得分:1)

将搜索模式更改为“正则表达式”,并替换:

tvec.at\((\d+)\).interrupt\(\);

使用:

if \(thr_ev_\1.get\(\)\) thr_ev_\1->interrupt\(\);

注意:

  • 搜索/替换字符串中的所有实际括号都必须使用反斜杠进行转义,因为它们在正则表达式中具有特殊含义。你需要对[]{}?*以及其他一些我忘记的角色做同样的事情。
  • 搜索字符串(\d+)中任意数字的匹配位于括号中,因此它形成一个捕获组。由于它是第一个这样的组,您可以在替换字符串中将其称为\1。 (在替换中多次引用它没有问题。)