【问题标题】:Regex, Match uppercase characters not between brackets正则表达式,匹配不在括号之间的大写字符
【发布时间】:2014-10-31 22:38:33
【问题描述】:

在 RegEx 中,我搜索一个模式,该模式选择多个大写字符(超过 1 个),这些字符不被大括号括起来。

应该匹配:

ABC
AB
XYZABC

但不是:

{ABC}
{AB}
{XYZABC}

【问题讨论】:

    标签: regex regex-negation regex-lookarounds


    【解决方案1】:

    下面的正则表达式将匹配一个或多个大写字母,前提是它后面没有闭合花括号 } 括号。

    ^[A-Z]+(?!.*?})$
    

    DEMO

    你可以使用 perl 正则表达式动词,

    {.*?}(*SKIP)(*F)|[A-Z]+
    

    DEMO

    【讨论】:

    • 字符类必须是 [A-Z] 而不是 [A-z]
    【解决方案2】:

    试试这个模式

    [A-Z]+(?![^}{]*})  
    

    Demo

    【讨论】:

      【解决方案3】:

      试试这个模式:

      {.*?}|([A-Z]+)
      

      如果不为空则测试 group1

      Demo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-15
        • 2011-09-06
        • 1970-01-01
        • 2020-02-24
        相关资源
        最近更新 更多