Java 如何使用正则表达式查找其他模式中出现的特定模式的数目?

Java 如何使用正则表达式查找其他模式中出现的特定模式的数目?,java,regex,Java,Regex,我试图用正则表达式解决一个问题,我需要在另一个正则表达式中找到复制模式,但在交错模式中有一个问题 例如: 1010和10101010 答案必须是3,但它给了我2 int count=0; Pattern expression = Pattern.compile(s); Matcher matcher = expression.matcher(scanner.next()); while(matcher.find()) {count++;} System.out.println(count);

我试图用正则表达式解决一个问题,我需要在另一个正则表达式中找到复制模式,但在交错模式中有一个问题 例如: 1010和10101010

答案必须是3,但它给了我2

int count=0;
Pattern expression = Pattern.compile(s);

Matcher matcher = expression.matcher(scanner.next());
while(matcher.find())
{count++;}
System.out.println(count);

一旦在第一个变量中找到该变量,它就会从那里开始搜索, 所以用你的方式找到所有匹配项是很复杂的

这是我从旧的家庭作业项目中修改的递归解决方案, 可能没有优化,但它可以工作

public static void main(String[] args) 
    {  
         String str1 = "1010";
         String str2 = "10101010";
         int len = str2.length();
         System.out.println(match(str1,str2,len,len,0));
    } 
    static int match(String str1,String str2,int len,int j,int times)
    {
        if(j == 0)
            return  times;
        Pattern p = Pattern.compile(str1);
        Matcher m = p.matcher(str2);
        int n = 0;
        if(m.find()){
             n = m.start()+1;
             times++;
        }
        return match(str1,str2.substring(n,str2.length()),str2.length(),--j,times);
    }

您的regexp表达式是什么?