2

我有以下表达示例

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

我可以在一个正则表达式中进行这样的评估吗?

基本上

  1. 只允许以下符号> < = ! - != >= <=
  2. and/or运算符之前和之后必须有空格,A 前提是它不是第一个字母。
  3. 我的变量总是不变的,在这种情况下是A

谷歌这次没有帮助,我对正则表达式真的很陌生,关于如何实现这些事情的指南会很好

4

1 回答 1

2

像这样的东西应该工作:

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

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

你可以在这里测试一下。

这是一个稍微简化的版本,您也可以尝试一下:

^(A ([<>!]=?|=) -?\d+( (and|or) |$))+$
于 2013-07-25T02:01:58.573 回答