【问题标题】:regex to match one string and negate the other正则表达式匹配一个字符串并否定另一个
【发布时间】:2018-08-28 23:50:51
【问题描述】:

我需要一个正则表达式来匹配来自Test<OKAY>Test< 字符串,它不应该匹配Test<?>

Test<?>  // shouldn't match
Test<OKAY> // should match

我试过Test&lt;[^?],但它匹配Test&lt;O,而不是Test&lt;OKAY&gt;中的Test&lt;

我该如何解决这个问题?

【问题讨论】:

  • 不清楚条件是什么,您需要OKAY 在括号中以匹配初始TEST&lt;,还是您需要括号中包含的任何内容都没有?,还是什么?
  • 是的。 OKAY 在括号中。假设您有一个包含这两行的文件。我需要一个正则表达式来匹配第二个,OKAY 这个词可以是任何东西。你可以用任何词代替 OKAY。
  • ...只要单词不包含问号?这是资格因素吗?
  • 是的。我想要所有包含 Test
  • @CertainPerformance 我发现我可以使用 Negative lookahead 工作。如果您有不同的方法,您可以发布答案。

标签: regex regex-negation regex-lookarounds regex-group regex-greedy


【解决方案1】:

Test&lt; 之后,您需要对非问号字符进行正向前瞻,后跟&gt; 表示括号结束:

Test<(?=[^?]+>)

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

【讨论】:

    【解决方案2】:

    使用前瞻:

    Test<(?=OKAY>)
    

    live demo

    【讨论】:

      【解决方案3】:

      测试

      在这里使用负前瞻。

      ?! = 后面没有\?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-16
        • 1970-01-01
        • 1970-01-01
        • 2015-09-02
        相关资源
        最近更新 更多