javascript - VSCode 搜索替换正则表达式

标签 javascript regex search replace visual-studio-code

我正在平整一个 Angular 翻译文件,我需要在 VScode 中对翻译键进行搜索替换。我需要剪掉最后一个键之前的所有内容并将其返回到替换。键最多只能有 3 层深。 key 和 keepThisInReplace 下面的词是任意的,将是不同的词。示例如下。

搜索字符串选项:

'key1.keepThisInReplace1' | translate
'key1.key2.keepThisInReplace2' | translate
'key1.key2.key3.keepThisInReplace3' | translate
'anyWord.AndLevelAmount.UpTo3AtLeast.anyWordToKeep' | translate

搜索不到:

'../../assets/images/
'./../assets/images/
'.......
'path').join
'staging.site
etc...

上面应该替换为:

'keepThisInReplace1' | translate
'keepThisInReplace2' | translate
'keepThisInReplace3' | translate
'anyWordToKeep' | translate

我正在尝试的方法不起作用 - 看起来像 '\w[^.].\w*.*\w*。将工作。几乎可以工作 - 在“路径”上拾取)。加入和“staging.site still”。

上面所有的键前面都有 {{。但是如果我锁定 {{ 那么我必须在替换中返回它。示例 = {{ key1.key2.keeptext |翻译 }} = {{ keeptext |翻译}}

最佳答案

您可以使用带有量词的非捕获组,该量词重复 1-3 次 1+ 个单词字符后跟一个点,并确保使用 anchor ^$ 启用多行。

在替换中使用 '

^'(?:\w+\.){1,3}(?=\w+'\s+\|\s+translate$)

如果字符串可以位于文件中的任何位置,您可以省略 anchor 并在翻译后使用单词边界 \b

'(?:\w+\.){1,3}(?=\w+'\s+\|\s+translate\b)

解释

  • ^ 字符串开始
  • (?:\w+\.){1,3} 重复 1 - 3 次匹配 1+ 个单词字符和一个点
  • (?= 正向前瞻,断言直接在右边的是
    • \w+'\s+ 匹配 1+ 个单词字符,' 和 1+ 个空白字符
    • \| 匹配|
    • \s+translate$ 匹配 1+ 个空白字符,translate 并断言字符串结束
  • ) 关闭正面前瞻

Regex demo

替代正向前瞻的另一种选择是使用 2 个捕获组。

在替换中使用组 1 和组 2 $1$2

^(')(?:\w+\.){1,3}(\w+'\s+\|\s+translate$)

Regex demo

关于javascript - VSCode 搜索替换正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693854/

相关文章:

javascript - 当我按下键盘上的键时,多次触发 keydown 事件

javascript - 正则表达式在第一个字符后强制使用单个空格

c# - Visual Studio 2010 的可搜索自定义标签?

PHP CSV VLookup

php - 如何在Excel中打印文档

javascript - 在 2 个匹配元素的内容周围添加一个 Div

javascript - 如何解决重新渲染次数过多的问题。 React限制渲染次数以防止无限循环

javascript - 如何使用 javascript 动态正确地去除 HTML 标签?

regex - 如何在 git checkout 命令中使用正则表达式来指定文件子集

mysql - 标签或搜索或两者