gpt4 book ai didi

regex - 在 PCRE 中模拟未知宽度的负后视

转载 作者:行者123 更新时间:2023-12-02 04:33:02 28 4
gpt4 key购买 nike

我有 following regex :

(?<=:)\s*\w+

我只想从字符串中提取comp comp:

savedPosition: comp;
CURLSCHET.NREC ('qwertyuiop'): noprotect;

当在所需模式之前的任何位置存在 () 时,我想避免匹配像 noprotect 这样的情况。

最佳答案

PCRE 不支持未知宽度的负后视(.NET 支持,它看起来会是 like this),但您可以在第一行 ( 之前的每一行中提取所有匹配项或 )使用 \G 的组合和 \K运算符在否定字符类的帮助下 [^()]这将匹配除 ( 之外的任何字符和 ) .

你可以使用

(?m)(?:^|\G)[^()\n]*?:\h*\K\w+

参见 regex demo

详情

  • (?m) - 开启多行模式
  • (?:^|\G) - 匹配字符串/行的开头或上一个匹配项的结尾
  • [^()\n]*? - 除 ( 以外的任何 0+ 个字符, )和换行符,尽可能少
  • : - 冒号
  • \h* - 0+ 水平空格
  • \K - 丢弃到目前为止匹配的所有文本的匹配重置运算符
  • \w+ - 1 个或多个单词字符。

关于regex - 在 PCRE 中模拟未知宽度的负后视,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708933/

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