正则表达式中对\K的支持

55
\K 转义序列会将匹配的开始位置重置为令牌列表中的当前位置(这只影响报告为完全匹配的内容)。支持在其正则表达式引擎中使用 \K(保留)的环境/语言/版本是什么,以及需要使用哪些库(如果有)来在模式中使用此功能?

2
为了帮助搜索,\K 也被称为正则表达式元字符。 - DavidRR
1个回答

54
\K转义序列被多个引擎、语言或工具支持,例如:
  • boost(自版本???起)
  • grep -P --------------------⇢ 使用PCRE
  • Oniguruma(自5.13.3起)
  • PCRE(自7.2起)
  • Perl(自5.10.0起)
  • PHP(自5.2.4起)
  • Ruby(由于使用Oniguruma引擎的一个分支 Onigmo,自2.0.0起)
  • Notepad++(自6.0起)

...到目前为止还不被以下工具支持:

  • .NET
  • awk
  • bash
  • ICU
  • Java
  • Javascript
  • Objective-C
  • POSIX
  • Python
  • Qt/QRegExp
  • sed
  • Tcl
  • vim --------------------⇢ 它没有\K,但它的\zs是等效的
  • XML -------------------⇢ 可扩展标记语言(XML)
  • XPath -----------------⇢ XML路径语言(XPath)

  • AutoIt也支持。不过我不确定它的支持时间有多长。 - James
    2
    此答案已添加到Stack Overflow正则表达式FAQ,位于“环视”一节下。 - aliteralmind
    .NET支持命名反向引用:https://learn.microsoft.com/zh-cn/dotnet/standard/base-types/backreference-constructs-in-regular-expressions#named-backreferences - juFo
    1
    @juFo 我认为这个问题与正则表达式中的大写字母\K和小写字母\k不同有关。 - Mahozad

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接