regex vscode正则表达式子匹配求值而不是连接?

ukqbszuj  于 2023-04-13  发布在  Vscode
关注(0)|答案(3)|浏览(139)
Test 300
Test 301
Test 302

我可以使用regex find来循环这些:

Test (3[0-9]*)

当我尝试用math替换时,它连接而不是求值?

Test $1-100

所以,它变成了:

Test 300-100

是否可以求值而不是连接,因此它变成:

Test 200

谢谢。

ut6juiuv

ut6juiuv1#

您可以使用VS Code Super Replace扩展来实现这一点。

Find字段为正则表达式
Replace为替换表达式,$$index语法的子匹配将通过处理函数字段中的函数解析

下面是一个使用示例,可以回答您的问题:

vom3gejh

vom3gejh2#

现在有更多的扩展可以做到这一点,包括我写的一个查找和转换。
使用此密钥绑定:

{
  "key": "alt+m",                     // whatever keybinding you want
  "command": "findInCurrentFile",
  "args": {
    "find": "(?<=Test\\s)(3\\d\\d)",  // get 300+ in capture group 1
    "replace": "$${ return $1 - 100 }",      // subtract 100 from capture group 1
    "isRegex": true
  }
}

wgmfuz8q

wgmfuz8q3#

您可以使用扩展名Regex Text Generator

  • 用多光标选择数字
  • 执行命令:基于正则表达式(regex)生成文本
  • 对于原始正则用途:(.*)
  • 对于生成器正则表达式用途:{{=N[1]-100}}

相关问题