我正在平整一个 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
并断言字符串结束
)
关闭正面前瞻
替代正向前瞻的另一种选择是使用 2 个捕获组。
在替换中使用组 1 和组 2 $1$2
^(')(?:\w+\.){1,3}(\w+'\s+\|\s+translate$)
关于javascript - VSCode 搜索替换正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693854/