处理几种可能性的Java正则表达式
我试图为以下用户生成的可能性找到一个正则表达式:
÷2%3%x#4%2$@
或者
÷2%x#4%2$@
或者
÷2%x#4$@
或者
÷2%x@
要理解表达式,它是一个分子介于
第一个÷
和第一个%
,分母从第一个%
到@
。
但是,分母有一个指数,从#
到$
用户可以输入他/她想要的任何数字,但结构保持不变。请注意,数字也可以是十进制
结构如下:÷(一个数字,如果它的两个或两个以上数字a%将位于两个数字之间)x(一个由一个数字组成的组,还有符号#,$和a%(s),也可以在两个数字之间交替)@
记住,数字可以是十进制数
我试图使用以下正则表达式,但没有成功:
"[÷]-?\\d+(\\.\\d*)?[%](-?\\d+(\\.\\d*)?){0,1}[x]([#]-?\\d+(\\.\\d*)?[$]){0,1}[@]"
我认为这个团体正在把事情复杂化。
此外,我还没有解释这个群体中可能发生的%
有什么建议吗,谢谢
# 1 楼答案
我找到了一个有效的正则表达式,我自下而上进行了测试: 这是:
这个正则表达式适用于所有类型的情况。甚至那些包含十进制数或不包含指数的数字
该组[0-9[%][\.][#][$]]*?允许正则表达式搜索指数,可以出现零次(这就是为什么*存在)或更多次,以及?让它成为可选的。类似地,对于x的系数(如果你不知道系数在哪里,请阅读帖子)和分子,我遵循了相同的想法。感谢大家为这个问题进行头脑风暴。我选择用我的答案来编程