【问题标题】:Visual Studio Code Regex contains but not ends withVisual Studio Code Regex 包含但不以
【发布时间】:2018-11-20 12:41:42
【问题描述】:

我想在 VS Code 中构建正则表达式,它返回整个解决方案中包含给定字符串的所有短语(请记住,它可以包含特殊字符)并且不以给定字符串结尾,例如 包含/webhelp,但不以/结尾

匹配:

/server/webhelp

blah/webhelp#

不匹配

/server/webhelp/

server#webhelp/

我不是正则表达式方面的专家,我尝试过构建类似的东西:

(?=/webhelp)(?=.*(?<!/)$)

但它不起作用。

【问题讨论】:

  • 您已经知道 pcre2 选项不启用后视,为什么要尝试它们?此外,要匹配某些字符串以突出显示或删除它,您需要使用字符,并且您的正则表达式仅包含环视。
  • 试试/webhelp(?!.*/$).*$
  • 我刚刚检查了这个表达式,它返回 /server/webhelp/
  • It does not/ 后面可能有空格?那就试试/webhelp(?!.*/\s*$).*$
  • 我刚刚复制了你的表达式并运行了 VS Code 搜索引擎。可惜没有选项可以在评论中链接屏幕截图作为证明。我还在 settings.json 文件中设置了 "search.usePCRE2": true 。如果这个表达式应该起作用,我不知道为什么它不起作用,问题是什么。

标签: regex visual-studio-code


【解决方案1】:

这是一个略短的正则表达式:

/webhelp(?!/)

它只匹配'/webhelp',除非它后面跟着一个斜杠。

【讨论】:

    【解决方案2】:

    can use infinite-width lookahead and lookbehind 从 Visual Studio Code v.1.31.0 版本开始没有任何限制,您现在不需要为此设置任何选项。

    对于早期版本,您可以使用前瞻。应该匹配你需要的正则表达式是

    /webhelp(?!.*/$).*$
    

    详情

    • /webhelp - 文字子串
    • (?!.*/$) - 负前瞻,确保行不以 / 结尾
    • .*$ - 该行的其余部分。

    即使在在文件中查找中它仍然有效:

    【讨论】:

    • 我检查了这个,当我尝试在单个文件中搜索时它也适用于我。不知道为什么对全局搜索引擎不起作用(Ctrl+Shift+F)。
    • @GoldenAge 我的解决方案仍然有效,我添加了另一个屏幕。另一种解决方案不检查行尾的/。可能是您没有很好地解释您的要求。
    • 我创建了与您相同的项目,您的表达式在其中正常工作,但在我的主项目中不起作用不知道为什么!这很奇怪!无论如何,你有我的支持。
    • @GoldenAge 好的,我明白了,没关系。让我们希望下一个版本将有一个更“稳定”和更酷的正则表达式支持。编码愉快。
    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    • 2020-08-06
    • 2022-07-06
    相关资源
    最近更新 更多