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

用于匹配不同模式的正则表达式

  •  0
  • PVitt  · 技术社区  · 11 年前

    目前,我们正在使用正则表达式匹配用户输入 ([^=]*)(=[01]) 用户键入信号名称(nnnann,其中n是数字,a是字母数字字符)及其值,即0或1。

    示例:101e10=1

    现在我们必须扩展解析器以匹配模式t=N,其中N表示一个数字。

    示例:t=5000

    我尝试使用扩展正则表达式以匹配这两种情况 ([^=]*)(=[01])|(^t)(=[0-9]*) ,但是使用该表达式,第一部分已经与模式t=N相匹配。

    如何排除模式 由表达式的第一部分匹配 [^=]* ?

    我已经试着用 ([^=]-[t]*)(=[01])|(^t)(=[0-9]*) ([^=]*-[t])(=[01])|(^t)(=[0-9]*) ,但两者都不起作用。此外,我觉得这两种尝试都不是减法功能的正确使用。

    2 回复  |  直到 11 年前
        1
  •  1
  •   Jerry    11 年前

    您也许可以修改第一个正则表达式,使其对验证更加严格。

    ([01]{3}[a-z][01]{2})(=[01])
    

    然后与您的第二个正则表达式组合:

    ([01]{3}[a-z][01]{2})(=[01])|(^t)(=[0-9]*)
    

    或者,由于您知道第一种格式以0或1开头,您可以执行以下操作:

    (^[01][^=]*)(=[01])|(^t)(=[0-9]*)
    
        2
  •  1
  •   Jon Lin    11 年前

    我想你需要这样的东西:

    (?:([0-9][^=]*)(=[01])|(t)(=[0-9]*))