我试图解析一些文本,但由于一些奇怪的原因,Java正则表达式不起作用。例如,我尝试过:
Pattern p = Pattern.compile("[A-Z][0-9]*,[0-9]*");
Matcher m = p.matcher("H3,4");
当我尝试获取数字m.group(1)和m.group(2)时,它只是给出了无匹配的异常。我是否遗漏了Java正则表达式的工作原理?
答案 0 :(得分:5)
是
matches()
或find()
。示例:
Pattern p = Pattern.compile("[A-Z](\\d*),(\\d*)");
matcher m = p.matcher("H3,4");
if (m.matches()) {
// use m.group(1), m.group(2) here
}
答案 1 :(得分:0)
您还需要括号来指定每个组的一部分。我将前导部分改为任何不是数字的东西,0次或更多次。每组中的数字是1位或更多位数。所以,不是*而是+。
Pattern p = Pattern.compile("[^0-9]*([0-9]+),([0-9]+)");
Matcher m = p.matcher("H3,4");
if (m.matches())
{
String g1 = m.group(1);
String g2 = m.group(2);
}