首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java模式Regex不匹配

Java模式Regex不匹配
EN

Stack Overflow用户
提问于 2015-08-21 05:19:17
回答 1查看 753关注 0票数 0

无法理解为什么下面的模式与任何东西都不匹配。包括一些更简单的测试示例:

代码语言:javascript
复制
// Pattern attempts to match against a String containing ?[0-9]?+
Pattern groups = Pattern.compile(".*?\\?([2-9]+)\\?.*");        
Matcher m = groups.matcher("incSkl(?2?,2)");
int val = Integer.parseInt(m.group(1));

甚至变得超级简单,并尝试在一个简单的输入“2?”为了比赛。仍然会在第3行出错。

奇怪的是,下面的regex测试人员似乎同意我的观点。它说这两个输入都应该是有效的完全匹配,在模式http://www.regexplanet.com/advanced/java/index.html上不需要任何标志。

这里发生了什么事?我甚至在CoderPad上抛出了一些东西,只是为了确保我的环境没有什么“关闭”的地方,而且它也有“不匹配”的错误。

此时,我意识到我可能可以使用find()做一些事情(这个用例的选项将是最明智的),但是我从来没有发生过这样的事情,而且在这一点上,我想知道为什么在大多数其他regex实现都没有问题的情况下,它不能完成完全匹配。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-21 05:21:07

你需要打电话:

代码语言:javascript
复制
m.find()

代码语言:javascript
复制
m.matches()

在调用:m.group(1)之前,否则您的代码在调用group()时会抛出一个很好的异常

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32132841

复制
相关文章

相似问题

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