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

RegEx捕获关键字前但括号后的所有内容

  •  1
  • DotFX  · 技术社区  · 8 月前

    测试字符串:

    [valign px=-2][center][bgcolor=GREEN]TESTING[/bgcolor][/center][/valign]
    

    我已经想出了 color.*?\] 这几乎奏效了。。。它获取关键字后的所有内容,包括结束括号:

    color=GREEN]  AND  color]   ---> Target ---> [bgcolor=GREEN]  AND  [/bgcolor]
    

    我只是不知道如何反过来做同样的事情

    \[.*?color.*?\] 这让我得到了键前到结束括号的整个字符串- [valign px=-2][center][bgcolor=GREEN] 但它也正确地给了我 [/bgcolor] 没有 TESTING 在他们之间

    我在用 https://regex101.com/ 用于测试

    3 回复  |  直到 8 月前
        1
  •  3
  •   The fourth bird    8 月前

    如果你想得到 [bgcolor=GREEN] [/bgcolor] 使用前导小写字符表示颜色,大写字符表示值的颜色,您可以使用:

    \[\/?[a-z]*color(?:=[A-Z]+)?]
    

    见a regex 101 demo

    或者使用用以下表示的否定字符类进行更广泛的匹配 [^

    \[[^][=]*color(?:=[^][=]+)?]
    

    部分正则表达式匹配:

    • \[ 比赛 [
    • [^][=]* 匹配0+次除以下字符之外的任何字符 [ ] =
    • color 按字面意思匹配
    • (?:=[^][=]+)? 可选匹配 = 以及除以下字符外的任何字符的1+倍 [ ] =
    • ] 按字面意思匹配

    见a regex 101 demo

        2
  •  2
  •   Tim Biegeleisen    8 月前

    假设您想匹配RHS值 bgcolor 标签, 您的实际正则表达式引擎支持 \K 标志,您可以使用以下模式:

    \[bgcolor=\K[^\]]+
    

    Demo

        3
  •  0
  •   sln    8 月前

    这只匹配非嵌套括号分隔的文本伪打开/关闭或自包含
    关键字所在表单中的标签 [/?..keyword../?]
    这可能对搜索和突出显示有用。

    \[/?[^\]\[]*?color[^\]\[]*?/?\]
    

    https://regex101.com/r/OQZHC6/1