【发布时间】:2020-11-01 03:09:28
【问题描述】:
我需要更换这个:
fixed variable 123
用这个:
fixed variable 234
在 VSCode 中,这匹配得很好:
fixed(.*)123
如果后面有数字,我找不到任何方法让它将捕获放在输出中:
fixed$1234
fixed${1}234
但是查找替换窗口看起来像这样:
我读到 VSCode 使用了 rust 风格的 rexes。Here 表示 ${1}234 应该可以工作,但 VSCode 只是将它放在输出中。..
尝试以according to here 风格命名捕获
fixed(?P<n>.*)123 //"invalid regular expression" error
ps;我很感激我可以在人为的例子中破解它
FIND: fixed (.*) 123
REPL: fixed $1 234
这在 vscode 中确实有效:
但并非我的所有数据在数字前始终具有相同的字符
【问题讨论】:
-
我已经将其破解为两步替换,首先替换为
xxx$1'234,然后替换'234为234,但我仍然很想知道单步方法是什么跨度> -
好吧,你不是在做一个 find/replace ,你是在做一个跨文件的搜索/replace。该问题不会发生在查找/替换小部件中。由于您在数字之前确实有一个空格,因此将其包含在您的捕获组中,例如
(.*?)( \d{1,})并替换为$1 234。\d前面有个空格,见regex101.com/r/kBGDnc/3 -
我会说这是搜索/替换功能中的错误。
-
@Mark 实际上,我发现即使是
$2本身也会造成问题。当替换模式中有两个或多个连续的反向引用时,您的解决方法有效。 OP 可以使用fixed()(.*)123并替换为fixed$1$2234,其中第一个捕获组匹配一个空白空间(这里是“技术”),第二个组捕获fixed和123之间的文本。 -
@Caius 抱歉我错过了
but not all my data consistently has the same character before the number。将来我会放置更多/所有输入示例,它们会在您说出您需要匹配的内容时一起变化。然后有人可以一次性复制您的所有输入版本并轻松测试。
标签: regex visual-studio-code find-replace