无法理解为什么下面的模式与任何东西都不匹配。包括一些更简单的测试示例:
// 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实现都没有问题的情况下,它不能完成完全匹配。
发布于 2015-08-21 05:21:07
你需要打电话:
m.find()或
m.matches()在调用:m.group(1)之前,否则您的代码在调用group()时会抛出一个很好的异常
https://stackoverflow.com/questions/32132841
复制相似问题