我不断收到我不应该得到的错误,我也不是正则表达式专家,但它应该是如此简单。我查看了很多次,无法弄清为什么它不起作用。我也搜索了一堆类似的东西,但找不到任何有相同问题的人。
这是我得到的错误:
Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:485)
at DailyData.importUsers(DailyData.java:456)
at DailyData.main(DailyData.java:40)
这是我的代码,通过调试,我发现了给出错误的最后一行:
Pattern memberSincePattern = Pattern.compile("\\W*(\\d+):(\\d+):(\\d+)\\W*(\\d+)/(\\d+)/(\\d+)");
Matcher memberSinceMatcher = memberSincePattern.matcher("12:12:12 12/12/2012");
String msGroupOne = memberSinceMatcher.group(1);
我在Ubuntu 14.04 LTS上使用eclipse。我已经导入了适当的库,并尝试了\ d {1,2}作为数字,并摆脱了前导\ W *。我希望它能够为每个组抓住1位或2位数字。我也没有语法错误或警告。
如例外所示,您需要先找到与正则表达式匹配的内容,然后再找到匹配的组。
例如,您可以使用Matcher#matches
,如下所示:
Pattern memberSincePattern = Pattern.compile("\\W*(\\d+):(\\d+):(\\d+)\\W*(\\d+)/(\\d+)/(\\d+)");
Matcher memberSinceMatcher = memberSincePattern.matcher("12:12:12 12/12/2012");
if(memberSinceMatcher.matches()) {
String msGroupOne = memberSinceMatcher.group(1);
}
作为一个方面说明,我想指出的是,如果你想匹配的只有原来的子序列String
,至少一次,你应该使用Matcher#find
代替Matcher#matches
。可能在while
循环中:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句