import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test {
public static void main(String[] args) {
String a ="12341234";
String regex="^(\\d+?)\\1$";
Pattern p=Pattern.compile(regex);
Matcher matcher = p.matcher(a);
while(matcher.find()) {
System.out.println(matcher.group(1));
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过使用Matcher和上面的正则表达式,我得到任何重复.但是,我只想重复2或更大的重复.当我尝试做正则表达式时
^(\\d+?){2,100}\\1$
Run Code Online (Sandbox Code Playgroud)
,即使在长度2和100之间有重复,我执行程序时也没有返回任何内容.我做错了什么?
你的想法是对的,只需要稍微修改一下就可以了。尝试这个:
(\d{2,100})\1
Run Code Online (Sandbox Code Playgroud)
我已经测试过[这里]
HSCoder 请求的更新:
确保重复序列没有两个连续的相同数字?例如,[11][11] 不起作用,但 [12][12] 可以
获取每两个不同的连续数字是非常痛苦的。尝试这个 :
((?:(?=0[^0]|1[^1]|2[^2]|3[^3]|4[^4]|5[^5]|6[^6]|7[^7]|8[^8]|9[^9])\d)+\d)\1
Run Code Online (Sandbox Code Playgroud)
我已经测试过[这里]