Java 重复数字的正则表达式

Java 重复数字的正则表达式,java,regex,duplicates,Java,Regex,Duplicates,在数字字符串中查找重复数字集的正则表达式是什么 假设 String s="0.1234523452345234"; 从这个字符串中,我需要获得“2345”。我尝试了下面的正则表达式- String s="0.1234523452345234"; String regex="(\\d+)\\1+\\b"; Pattern p=Pattern.compile(regex); Matcher m=p.matcher(s); if(m.find()) { System.out.println(

在数字字符串中查找重复数字集的正则表达式是什么

假设

String s="0.1234523452345234";
从这个字符串中,我需要获得“2345”。我尝试了下面的正则表达式-

String s="0.1234523452345234";
String regex="(\\d+)\\1+\\b";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(s);
if(m.find())
{
    System.out.println(m.group(0));
}
但结果是

523452345234

而我需要打印

2345


我尝试了这个正则表达式,它可以找到重复一次的数字,第一次出现时它可以由m.group(1)显示:

输出:

2345

我尝试了这个正则表达式,它可以找到重复一次的数字,第一次出现时它可以由m.group(1)显示:

输出:

2345
“(\\d+\\1+\\b”
macthes是紧跟此序列的任何数字序列,至少一次。它后面可以是序列的多次出现(
+
量词)。正则表达式还在最后一个匹配序列之后强制执行单词边界

我认为您需要的是以下正则表达式:

“(\\d+).*\\1”
(没有单词边界,序列之间有任何内容,并且只有一次重复序列。例如:

0.1234789897897123499
  ^^^^         ^^^^----  (\\d+) and \\1
      ^^^^^^^^^--------  .*
如果您的最长跑步之后需要立即重复(中间没有填充),则从正则表达式中删除
*

组(0)
将返回完全匹配(例如
12347898978971234
),
组(1)
将包含第一个捕获组(例如
1234
)。

“(\\d+)\\1+\\b”
macthes是紧跟此序列至少一次的任何数字序列。它后面可以有多个出现的序列(
+
量词)。正则表达式还强制在最后一个匹配序列之后执行单词边界

我认为您需要的是以下正则表达式:

“(\\d+).*\\1”
(没有单词边界,序列之间有任何内容,并且只有一次重复序列。例如:

0.1234789897897123499
  ^^^^         ^^^^----  (\\d+) and \\1
      ^^^^^^^^^--------  .*
如果您的最长跑步之后需要立即重复(中间没有填充),则从正则表达式中删除
*


group(0)
将返回完全匹配(例如
12347898978971234
),
group(1)
将包含第一个捕获组(例如
1234
)。

我需要输出字符串包含重复的唯一数字的最大长度对不起,我忘了提到“唯一”.2345234不是唯一数字的集合,因为结尾的234已经在开头了。Kay,谢谢你的尝试!@Shubham你可以检查我的尝试。这是a。我需要输出字符串包含重复的唯一数字的最大长度。对不起,我忘了提到“唯一”.2345234不是唯一的数字集,因为结尾的234已经在开始了。Kay,谢谢你的尝试!@Shubham你可以检查我的尝试。这是a我不会接受你的答案,因为我的代码重复出现,因为我的代码有相同的输出,所以…我会等待是否有人能得到确切的所需输出…同时我会解决我的问题,而不需要注册x、 谢谢,这只是一个尝试,不管怎样,我已经在试着看我是否能得到你想要的准确输出,在这种情况下,我会更新我的答案并通知你@Shubham@MohamedKaram:提示:“lookahead断言”。您要匹配的不是123123,而是后面有123的123。是的,我只需要打印m.group(0)…或者,只需匹配
”([0-9]+)(?=\\1)"
。我不会接受你的答案,因为我的代码重复出现,因为我的代码具有相同的输出,所以…我会等待是否有人能够获得准确的所需输出…同时我会在没有正则表达式的情况下解决我的问题。谢谢。这只是一次尝试,我已经在尝试是否能够获得你所需的准确输出,在这种情况下,我将更新我的答案并通知你@Shubham@MohamedKaram:提示:“lookahead断言”。您要匹配的不是123123,而是123后面有123。是的,我只需要打印m.group(0)…或者,只需匹配
“([0-9]+)(?=\\1)”
。是的,我需要立即跟踪重复项是的,我需要立即跟踪重复项