Java 如何为一个句子中给定的多个数字编写正则表达式?

Java 如何为一个句子中给定的多个数字编写正则表达式?,java,regex,Java,Regex,在这里,如果我的两个数字(可以是任何数字)在一个没有空格分隔的数字中找到,我必须返回true或false 这里有两个数字(1和3)出现在两个不同的数字(8913011,12)中,它返回true。这是错误的情景 String styy = "12 46499 8913011"; // ^ ^ boolean contains = styy.matches("(.*\\b[0-9]*?(1[0-9]*?3|3[0-9]*?1)[0-9]*?\\b.*?)"

在这里,如果我的两个数字(可以是任何数字)在一个没有空格分隔的数字中找到,我必须返回true或false

这里有两个数字(1和3)出现在两个不同的数字(8913011,12)中,它返回true。这是错误的情景

String styy = "12 46499 8913011";
//             ^           ^
boolean contains = styy.matches("(.*\\b[0-9]*?(1[0-9]*?3|3[0-9]*?1)[0-9]*?\\b.*?)");
System.out.println(contains);
我想搜索这两个数字(1和3),两个数字出现在一个数字中,比如4153

String styy = "4153 245 345"
//              ^ ^

在上述字符串中,单个数字中有2位数字

一组数字中的3和1

在您的代码中,如果传入的字符串中的任何一组数字同时包含数字1和3,则应返回true

boolean contains = styy.matches("\\d*1(\\d*)3\\d*|\\d*3(\\d*)1\\d*");

Short Description:
  any digits before a 1, any digits between a 3 and any digits after it
OR
  any digits before a 3, any digits between a 1 and any digits after it

用两个正面的头像怎么样

boolean contains = styy.matches(".*\\b(?=\\d*1)(?=\\d*3)(\\d+).*");

**
是实际输入的一部分,还是你只是想将
1
3
加粗?嗯,我真的不明白你的意思,你能提供更多的例子吗?请不要这样做——你可以马上看出网站的代码格式不会使代码加粗,因此应该在发布之前编辑并删除它(网站编辑器会在你发布之前向你展示你的文章的样子)。请现在就做,除非你想迷惑大家。我怀疑你想要实现什么,但不想把我的时间花在书面解释可能不是你真正想要的解决方案上。因此,为了更快地得到答案,花点时间,提供更多的例子,解释你想要的结果,以及你想要避免的极端情况。这是对免费工作的请求。请养成在要求志愿者为您做这件事之前总是尝试的习惯。所有括号是什么?删除括号。但如果同时包含3和1,则返回整数。(\d*1(\d*)3\d*)|(\d*3(\d*)1\d*))拆分字符串,以便可以得到同时包含1和3的数字,但是如果其中的任何数字同时包含1和3,则可以测试整个字符串。请编辑您的问题以澄清(我强烈建议,仅在没有解释的情况下转储正则表达式并没有多大帮助)。不要添加注释:有时注释不会自动显示,这会使您的答案更难阅读。