Java正则表达式不';我找不到数字
我试图解析一些文本,但由于一些奇怪的原因,Java正则表达式不起作用。例如,我尝试过:Java正则表达式不';我找不到数字,java,regex,Java,Regex,我试图解析一些文本,但由于一些奇怪的原因,Java正则表达式不起作用。例如,我尝试过: Pattern p = Pattern.compile("[A-Z][0-9]*,[0-9]*"); Matcher m = p.matcher("H3,4"); 当我试图得到m.group(1)和m.group(2)的数字时,它只是给出了“找不到匹配项”的例外。我是否遗漏了Java正则表达式的工作原理?是的 必须首先在匹配器上调用matches()或find() 您的正则表达式必须实际包含
Pattern p = Pattern.compile("[A-Z][0-9]*,[0-9]*");
Matcher m = p.matcher("H3,4");
当我试图得到m.group(1)和m.group(2)的数字时,它只是给出了“找不到匹配项”的例外。我是否遗漏了Java正则表达式的工作原理?是的
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
}
对
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
}
您还需要括号来指定每个组的组成部分。我将前导部分更改为非数字的任何内容,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);
}
您还需要括号来指定每个组的组成部分。我将前导部分更改为非数字的任何内容,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);
}
有关代码示例,请参阅。有关代码示例,请参阅。