正则表达式匹配复杂表达式

时间:2013-07-25 01:55:44

标签: regex

我有以下表达式的例子

A > 16
A <= 16 and A >= 1
A < 40 or A > -40
A != 19 and A > 50 and A != 8
A > 1 or A < 2

我可以在一个正则表达式中进行此类评估吗?

basicly

  1. 仅允许以下商品> < = ! - != >= <=
  2. and / or运算符之前和A之后必须有空格 只有它不是第一个字母。
  3. 我的变量始终是常量,在本例中为A
  4. 谷歌没有帮助这一次,我真的很新的正则表达式,关于如何实现这样的事情的指南会很好

1 个答案:

答案 0 :(得分:2)

这样的事情应该有效:

^A ([<>!]=?|=) -?\d+( (and|or) A ([<>!]=?|=) -?\d+)*$

它允许使用比较器A<>!之一将<=与某个正整数或负整数进行比较的表达式, >=!=,后跟任意数量的其他类似表达式,由andor分隔 - 您列出!!=为单独的符号,所以我允许两者作为比较器,即我的解决方案实际上允许像A ! 2这样的表达式。如果不合适,请在上述模式中将([<>!]=?|=)替换为([<>]=?|!?=)

您可以测试here

以下是您可以试用的略微简化的版本:

^(A ([<>!]=?|=) -?\d+( (and|or) |$))+$