Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理多个可能性的Java正则表达式_Java_Regex_Regex Group - Fatal编程技术网

处理多个可能性的Java正则表达式

处理多个可能性的Java正则表达式,java,regex,regex-group,Java,Regex,Regex Group,我正在尝试为以下用户生成的可能性找到正则表达式: ÷2%3%x4%2$@ 或 ÷2%x4%2$@ 或 ÷2%x4$@ 或 ÷2%x@ 要理解这个表达式,它是一个分子介于 和第一个%,分母从第一个%到@。 但是,分母有一个指数,从到美元 用户可以输入他/她想要的任何数字,但结构保持不变。请注意,数字也可以是十进制 结构如下:÷一个数字,如果其两个或两个以上的数字a%将位于由数字组成的digitsxa组之间,也包括符号,$和a%s,也可以在数字之间交替@ 记住,数字可以是十进制数 我尝试使用以下正则

我正在尝试为以下用户生成的可能性找到正则表达式:

÷2%3%x4%2$@ 或

÷2%x4%2$@ 或

÷2%x4$@ 或

÷2%x@ 要理解这个表达式,它是一个分子介于 和第一个%,分母从第一个%到@。 但是,分母有一个指数,从到美元

用户可以输入他/她想要的任何数字,但结构保持不变。请注意,数字也可以是十进制

结构如下:÷一个数字,如果其两个或两个以上的数字a%将位于由数字组成的digitsxa组之间,也包括符号,$和a%s,也可以在数字之间交替@

记住,数字可以是十进制数

我尝试使用以下正则表达式,但没有成功:

"[÷]-?\\d+(\\.\\d*)?[%](-?\\d+(\\.\\d*)?){0,1}[x]([#]-?\\d+(\\.\\d*)?[$]){0,1}[@]"
我认为组-?\d+\.\d*?{0,1}正在使事情复杂化。 此外,我还没有说明这一组中可能出现的百分比

任何建议,谢谢编辑:删除旧帖子内容

根据您的新测试用例,我改进了您的正则表达式以匹配所有用例,并简化了正则表达式:

÷[0-9%]+?x(#[0-9%]+?\$)?@  OR  ÷[\d%]+?x(#[\d%]+?\$)?@
注:

[]标记允许的字符组,因此括号没有用处

也[÷][0-9]+[0-9[%]+]?与÷[0-9]+[0-9%]+相同吗?示例中的第一部分匹配任意数字0-9 n次,然后检查0-9或%是否为n次非贪婪抓取。所以你可以用第二张支票来检查整件事

通过将指数包装在正则表达式类中:我们可以使用?==>这将使您的第四个测试用例正常工作


如果需要,您也可以用\d任何数字替换0-9。

我发现了一个有效的正则表达式,我自下而上进行了测试: 这是:

[÷][0-9[%][\\.]]+?[x][0-9[%][\\.][#][$]]*?[@]
此正则表达式适用于所有类型的情况。甚至那些包含十进制数或不包含指数的数字


组[0-9[%][\.][$]]*?允许正则表达式搜索指数,指数可能出现零这就是为什么*有或更多次和?使它成为可选的。类似地,我也遵循了同样的想法,如果你不知道系数和分子的位置,那么就阅读文章。感谢大家为这个问题进行头脑风暴。我已选择使用我的答案进行编程。

什么是有效/无效输入?您为什么不。。。。只是不使用正则表达式?你说不使用正则表达式是什么意思@user202729有效输入是我在顶部列出的可能性@luk2302如果不使用正则表达式,只使用input.equalsfirsthing | | | | input.equalsecondthing | input.equalsfirdthing.Muller以下输入无效:÷3%4%x%2%0$@我更新了答案。如果你能写下所有可能的规则并把它放到你的问题中,那将是最好的。我不知道语法,所以很难把它弄对。这个匹配的÷a_b_c%%不确定wanted@Toto我知道。但只要我对什么是有效的,什么是无效的没有任何规定,我就无法改进我的答案。@I_o解决你的问题,目前还不可能帮助你。如果需要帮助,请提供语法。像这样:数字%或者正好是1个timenumber等等。你能用文字表达吗?这对我有很大帮助。你的测试用例失败了吗?至少对我来说是这样。为什么对单个字符使用组?或者这是测试用例???再试一次。。唯一会失败的是最后一个测试用例。Muller和第一个测试用例不应该以零开始。最后一个测试用例。。这很容易克服。但是,上面的正则表达式适用于所有其他的正则表达式。你能在正则表达式101中告诉我你是如何匹配它的吗?这对我不起作用。即使是第一个病例也不匹配。