如何找到与模式的动态匹配

时间:2015-03-27 15:18:34

标签: java android pattern-matching

好的,所以我一直在寻找答案,但无法找到任何答案:

我正在手机上创建一个文件,想写下以下内容:

如果具有此模式的行" N:xval,yval"存在数字N,而且xval和yval没有设置,那么我想用" N:xval + 1,yval + {0或1}"替换该行。 如果没有这样的行,我想用" N:1,{0或1}"

创建一个新行

问题:它没有找到匹配

我处于这种状态:

for (int N=0; N<myNumber; N++){
    Pattern p = Pattern.compile("(\\d+):(\\d+),(\\d+)");
    Matcher m = p.matcher(""+myNumber+":(\\d+),(\\d+)");
    m.find();

    int xval, yval, val;
    if (m.matches()) {
        val =Integer.parseInt(m.group(1));
        xval = Integer.parseInt(m.group(2));
        yval = Integer.parseInt(m.group(3));
        ++xval;
        if (myBoolean==true){
            ++yval;
        }
        line = String.format("%d:%d,%d", val ,xval, yval);
        try {
            globalwriter.write(line.getBytes(), m.start(), line.length());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }else{
        int zeroorone;
        if (myBool==true){
            zeroorone=1;
        }else{
            zeroorone=0;
        }
        line = String.format("%d:%d,%d \n ", myNumber ,1, zeroorone);
        try {
            int end;
            if (checker.length() == 0){
                end = 0;
            }else{
                end = (int)checker.length() -1;
            }
            globalwriter.write(line.getBytes(),(int) end,line.length());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

感谢您的回复

1 个答案:

答案 0 :(得分:0)

p.matcher()需要是您要匹配的String,而不是正则表达式。

尝试将正则表达式移动到Pattern:

Pattern p = Pattern.compile(""+myNumber+":(\\d+),(\\d+)");
Matcher m = p.matcher(inputString);

编辑:inputString应该在&#34; N:xval,yval&#34;格式