我有以下表达式的例子
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
> < = ! - != >= <=
and
/ or
运算符之前和A
之后必须有空格
只有它不是第一个字母。A
答案 0 :(得分:2)
这样的事情应该有效:
^A ([<>!]=?|=) -?\d+( (and|or) A ([<>!]=?|=) -?\d+)*$
它允许使用比较器A
,<
,>
,!
之一将<=
与某个正整数或负整数进行比较的表达式, >=
,!=
,后跟任意数量的其他类似表达式,由and
或or
分隔 - 您列出!
和!=
为单独的符号,所以我允许两者作为比较器,即我的解决方案实际上允许像A ! 2
这样的表达式。如果不合适,请在上述模式中将([<>!]=?|=)
替换为([<>]=?|!?=)
。
您可以测试here。
以下是您可以试用的略微简化的版本:
^(A ([<>!]=?|=) -?\d+( (and|or) |$))+$