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

标签 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

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

基本上

  1. 仅允许以下符号 > < = ! - != >= <=
  2. and 之前必须有空格/or运算符和 A 之后 仅当它不是第一个字母时。
  3. 我的变量始终是常量,在本例中为 A

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

最佳答案

这样的事情应该有效:

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

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

您可以测试一下here .

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

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

关于正则表达式 匹配复杂表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847730/

相关文章:

javascript - 奇怪的 JavaScript 正则表达式行为

python - 解析 json 元素

regex - Perl 正则表达式 - 我可以说 'if character/string matches, delete it and all to right of it' 吗?

python - 使用 re.findall 匹配组前的点的正则表达式

regex - 删除 powershell 正则表达式中的括号?

javascript - 用于匹配仅由字母列表构成的单词的正则表达式

JavaScript regex.test Firefox 与其他浏览器,不同的行为

正则表达式匹配单词边界或非数字

mysql - 在 sql 查询中使用 JOIN 或在查询中使用存储函数,哪个更好?

asp.net - IIS URL 将模块 url 重写为小写