gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:28:17 24 4
gpt4 key购买 nike

我正在平整一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com