与我的REGEX匹配时出错

时间:2015-01-26 14:56:40

标签: java regex string

我可以帮助用Regex获取这些字符串..这是我的源代码..

帮助我!!!

String t="01-21 10:56:41.161 D/RILJ    ( 2785): [rild] [2058]< VOICE_REGISTRATION_STATE {1, 271c, 0000058d, 16, null, null, null, null, null, null, null, null, null, null, null}";
String Exp= "(VOICE_REGISTRATION_STATE) .(\\d+), (\\w+), (\\w+), (\\d+),";
Pattern p = Pattern.compile("\\b"+Exp+"\\b", Pattern.CASE_INSENSITIVE);

Matcher m = p.matcher(t);

//表示该行的所有匹配

    if (m.find()) {

  Toast.makeText(getBaseContext(),"band="+m.group(2),Toast.LENGTH_SHORT).show();
  Toast.makeText(getBaseContext(),"Lac="+m.group(3),Toast.LENGTH_SHORT).show();
  Toast.makeText(getBaseContext(),"CID="+m.group(4),Toast.LENGTH_SHORT).show();
  Toast.makeText(getBaseContext(),"Tech="+m.group(5),Toast.LENGTH_SHORT).show();
    }

1 个答案:

答案 0 :(得分:0)

问题仅在于您最后添加的单词边界。只需删除它。因为在逗号(,它存在于数字16 旁边)和空格之间不存在单词边界。 \b匹配单词字符和非单词字符。

Pattern p = Pattern.compile("\\b" + Exp, Pattern.CASE_INSENSITIVE);

Just play with adding a word boundary at the last in here.