【发布时间】:2021-04-30 13:20:56
【问题描述】:
我需要使用正则表达式验证一个字符串,以确认它是否遵循有效的格式。 字符串可以包含数字、运算符、空格、点、左括号、右括号、逗号,这些聚合函数 SUM、MAX、MIN、AVG 和以字母 V 开头的变量。
我发现这个正则表达式 ^[0-9+-/()., ]+$ 这检查 0-9 (数字); '+'; '-'; ''; '/'; '('; ')'; '.'; ','; ' '(空间)。但我无法在其中包含聚合函数和字母 V。
一些有效的输入字符串是
AVG(SUM(1, 2, 3), SUM(4, 5, 6)) * 100SUM(V1/2,(2+7),3)+(V1+V2)
有人可以帮我解决这个问题吗?
【问题讨论】:
-
您是要确保字符串中只出现有效字符、聚合函数和变量名,还是要检查字符串的格式是否正确(即两边都有一个操作数运算符,括号匹配等...)?
-
您是否考虑过使用真正的语法/解析器而不是正则表达式?
-
这不是正则表达式能做的事情,你堆栈推操作符,括号,...
-
是 ^[A-Za-z0-9+-/()., ]+$ 你在找什么?
-
@DevMJ then
V+1SUM((((V1111((((V+是有效的,那么?