gpt4 book ai didi

java - 数字正则表达式不匹配

转载 作者:行者123 更新时间:2023-11-30 03:48:01 28 4
gpt4 key购买 nike

我不断收到不应该收到的错误,而且我不是正则表达式专家,但它应该很简单。我检查了很多次,但不明白为什么它不起作用。我也搜索了很多类似的东西,但我找不到任何有同样问题的人。

这是我收到的错误:

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);
}

这是javadoc entry for Matcher#matches .

<小时/>

作为旁注,我想指出,如果您只想匹配原始 String 的子序列,至少一次,您应该使用 Matcher #find 而不是 Matcher#matches。可能在 while 循环中:)

关于java - 数字正则表达式不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25129916/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com