代码之家  ›  专栏  ›  技术社区  ›  GoldenAge

Visual Studio代码regex包含但不以结尾

  •  3
  • GoldenAge  · 技术社区  · 6 年前

    我想在vs代码中构建regex表达式,它返回整个解决方案中包含给定字符串的所有短语(请记住,它可以包含特殊字符),而不是以给定字符串结尾,例如。 包含 /webhelp 但不是以 /

    比赛:

    /server/webhelp
    
    blah/webhelp#
    

    不匹配

    /server/webhelp/
    
    server#webhelp/
    

    我不是Regex的专家,我尝试过构建如下内容:

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

    但它不起作用。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Poul Bak    6 年前

    这是一个略短版本的regex:

    /webhelp(?!/)
    

    它只是匹配 '/webhelp' 除非后面跟一个斜线。

        2
  •  3
  •   Wiktor Stribiżew    6 年前

    请注意,此时,vscode regex还不支持lookbehinds,即使您具有 “search.usepcre2”:true set

    似乎迟早会添加lookbehind支持:

    < Buff行情>

    如果您仍然缺少查找断言,请不要担心!Javascript最近才支持这一功能,在稍后的电子外壳更新中,它应该会出现在vs代码中。

    < /块引用>

    此时,您可以使用lookaheads。应该符合你需要的正则表达式是

    /webhelp(?!**美元
    < /代码> 
    
    

    详细信息

    • /webhelp-a literal substring
    • <代码> >(?)!.*/$)-a negative lookahead that maken the line does not end with/
    • *$.-The rest of the line.

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

    "search.usePCRE2": true设置.

    似乎迟早会增加lookbehind支持:

    如果您仍然缺少查找断言,请不要担心!Javascript最近才支持这个特性,在稍后的电子外壳更新中,它应该会出现在vs代码中。

    此时,您可以使用lookaheads。应该符合你需要的正则表达式是

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

    enter image description here

    细节

    • /webhelp-文字子字符串
    • (?!.*/$)-一种确保线路不以/
    • .*$-剩下的部分。

    即使在在文件中查找:

    enter image description here