首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java正则表达式找不到数字

Java正则表达式找不到数字
EN

Stack Overflow用户
提问于 2011-11-18 11:18:30
回答 2查看 433关注 0票数 0

我正在尝试解析一些文本,但是由于某种奇怪的原因,Java regex无法工作。例如,我尝试过:

代码语言:javascript
运行
复制
    Pattern p = Pattern.compile("[A-Z][0-9]*,[0-9]*");
    Matcher m = p.matcher("H3,4");

当我尝试获取数字m.group(1)和m.group(2)时,它只是给出了No match found异常。关于Java regex的工作原理,我是不是漏掉了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-18 11:20:31

是。

  1. 您必须先在匹配器上实际调用matches()find()
  2. 您的正则表达式必须实际包含捕获组

示例:

代码语言:javascript
运行
复制
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
}
票数 5
EN

Stack Overflow用户

发布于 2011-11-18 11:29:18

您还需要使用括号来指定属于每个组的内容。我将前导部分改为任何不是数字的部分,0或更多次。每组中的数字是1位或更多。所以,不是*而是+。

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8177322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档