【问题标题】:regex not to match certain characters正则表达式不匹配某些字符
【发布时间】:2018-08-02 13:32:10
【问题描述】:
(=606.{2})([123|]{2})

匹配

=606  1|

但是我怎样才能让它只匹配不匹配的情况呢? 例如,我需要找到如下案例:

=606  4|

我试过但不匹配:

(=606.{2})([^123|]{2})

所有字符串都具有以下模式:

=\d\d\d\s\s..

我需要验证 .. 字符,它可能采用以下值: 1,2,3,|.

所以我需要一个正则表达式,它可以匹配所有不适用于上述规则的字符串

也试过了 ^(?!=606.{2}[123|]{2}),也不匹配

=606 4|

我在这里测试 http://regexstorm.net/tester

【问题讨论】:

  • 你的任务是什么?匹配一个不完全匹配某个模式的字符串? ^(?!=606.{2}[123|]{2})?
  • 您的所有数据是否都以=606 开头并以| 结尾并且在606 和最后两个字符之间总是有2 个空格?
  • 试试(=606.{2})(?![123|]{2})(..),有用吗?
  • (=606.{2})(?![123|]{2})(..) 成功了,谢谢

标签: .net regex regex-negation


【解决方案1】:

要限制预期匹配的最后两个字符,您可以使用前瞻并使用 .. 使用这些字符:

(=606.{2})(?![123|]{2})(..)
          ^^^^^^^^^^^^^

这匹配

  • (=606.{2}) - 第 1 组:=606 和 2 个除换行符以外的字符
  • (?![123|]{2}) - 接下来的两个字符不能是 123|
  • (..) - 第 2 组:除换行符以外的任意 2 个字符。

请参阅.NET regex demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多