请问:如果我有两个字符串:cat acatb,我想要匹配cat,我的正则表达示能不能这样写:pattern = Pattern.compile("\bcat\b"); 

解决方案 »

  1.   

    \b是一个单词的边界,你这样只能匹配第一个吧,直接pattern = Pattern.compile("cat"); 不行吗
      

  2.   

    pattern = Pattern.compile("\\bcat\\b"); 
    这个是只匹配cat,也就是匹配第一个cat
      

  3.   

    \b是边界符,\是转义符号,所以要加\,\\b其实就是\b了
      

  4.   

    刚刚写的,调用getCommon形参是一个数组,这样不但可以算3个数几十几百个都可以//最大公倍数
    private static int getMaxCommonDivisor(int nNum1, int nNum2)
    {
    int a = Math.min(nNum1,nNum2);
    int b = Math.max(nNum1,nNum2);
    int c = a;

    while (c!=0)
    {
    a = c;
    c = b%a;
    b = a;
    }

    return a;

    }

    //最小公约数
    private static int getMinCommonMultiple(int nNum1, int nNum2)
    {
    return (nNum1*nNum2/getMaxCommonDivisor(nNum1, nNum2)); 
    }

    //求多个数的最大公约数与最小公倍数
    private static int[] getCommon(int[] nArr)
    {
    int nMaxCommonDivisor = 0;
    int nMinCommonMultiple = 0;
    if (nArr != null && nArr.length>1)
    {
    nMaxCommonDivisor = getMaxCommonDivisor(nArr[0],nArr[1]);
    nMinCommonMultiple = getMinCommonMultiple(nArr[0],nArr[1]);
    for(int n=2; n<nArr.length; n++)
    {
    nMaxCommonDivisor = getMaxCommonDivisor(nMaxCommonDivisor,nArr[n]);
    nMinCommonMultiple = getMinCommonMultiple(nMinCommonMultiple,nArr[n]);
    }
    }

    return new int[]{nMaxCommonDivisor,nMinCommonMultiple};
    }