【问题标题】:Notepad++ Replace, RegEx记事本++替换,正则表达式
【发布时间】:2013-03-19 07:59:20
【问题描述】:

我正在尝试在 Notepad++ 中替换 RegEx,但遇到了问题。

基本上我正在编写一个脚本,并在一个函数中添加了一个额外的变量,该变量在我的代码中出现了数百次。

原来是这样:
MouseClick(442,421)

现在我为鼠标点击延迟添加了第三个变量,所以它将是

MouseClick(442,421,4500)

4.5 秒是默认延迟

目前它不能作为未声明的第三个变量起作用,所以我基本上想使用 RegEx 来查找我所有的鼠标点击并将默认值 4500 添加到末尾,这可能还是 RegEx 不是答案?

我正在寻找:MouseClick(*,*)
并替换为:MouseClick(*,*,4500)

用通配符替换时值也会相同吗?

谢谢。

【问题讨论】:

  • 我将只编辑原始函数,添加代码以检查是否使用arguments.length 省略了第三个参数,如果是,则分配默认值 4500。
  • 是的,我最初考虑过,认为 RegEx 可能更容易,但可能不是:p 我可能会试一试!
  • 我对使用正则表达式解决大型代码库中的问题的想法:xkcd.com/1171

标签: regex macros replace notepad++


【解决方案1】:

您不能用通配符替换。您必须“捕获”以前存在的值。你可能想找到

MouseClick\((.*),(.*)\)

替换成

MouseClick(\1,\2,4500)

如果您有任何问题,请发表评论。

【讨论】:

  • .* 是一个贪心匹配。如果该行有两个或多个逗号和一个右括号,则替换将无法按预期工作。例如,使用 Notepad++ v6.2 将 MouseClick(442,421); // (x, y) 更改为 MouseClick442,421); // (x, y,4500。 (由于某种原因,替换丢失了括号,这是 Notepad++ 错误吗?)可能会更好地搜索 (MouseClick\([ 0-9]*,[ 0-9]*)(\)) 并替换为 \1,4500\2
  • 刚刚发现Notepad++的正则表达式替换中圆括号指定分组。使用\(\) 插入圆括号。有关详细信息,请参阅boost.org/doc/libs/1_48_0/libs/regex/doc/html/boost_regex/…
【解决方案2】:

选择正则表达式搜索模式,将MouseClick\((.*),(.*)\)替换为MouseClick(\1,\2,4500)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多