如何使用正则表达式在字符串中查找连续重复(即[12] [12])但只有长度为2或更大?

HSC*_*der 6 java regex

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之间有重复,我执行程序时也没有返回任何内容.我做错了什么?

meo*_*meo 3

你的想法是对的,只需要稍微修改一下就可以了。尝试这个:

(\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)

我已经测试过[这里]

  • 可能值得注意的是,{2,} 将匹配字面上的 2 或更大的值,而不是上限为 100(如果这就是您要查找的值)。`(\d{2,})\1` (3认同)