我不确定这是否可能:
编写一个程序将中缀表示法转换为后缀表示法。到目前为止一切进展顺利,但尝试实现验证却很困难。
我正在尝试使用正则表达式来验证中缀表示法,并遵守以下规则:
- 字符串只能以数字或
(
(程序不允许负数)开头 - 字符串只能以数字或
结尾
- 字符串只能包含
0-9*/()-+
- 字符串不得允许以下字符一起出现
+*/-
我有一个符合前 3 条规则的正则表达式:
(^[0-9(])([0-9+()*]+)([0-9)]+$)
是否可以使用正则表达式来实现最后一条规则?
最佳答案
我只会回答第四条规则,因为您只对它有问题。
是的,有这种可能性,但我认为正则表达式不是检查这一点的合适工具......
此模式 ^(?(?=.*\+)(?!.*[\*\/-])).+$
将匹配任何包含 + 的字符串
并且不包含其他字符:/
、*
、-
。一个字就已经很长,很难读了。 See demo .
它使用条件表达式(?...)
来检查+
的前瞻检查是否成功,如果成功,则负前瞻确保您不会包含任何 \*-
字符。
对于所有字符,正则表达式将变得非常大并且难以维护。
这就是为什么我不推荐它来完成这项任务。
关于java - 正则表达式 - 禁止某些字符连续出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52442699/