Java正则表达式找不到匹配项

订书钉

我遇到Java正则表达式问题。我需要匹配的字符串遵循以下模式:378-Columbian Forecast Yr-NB-Q-Columbian_NB我需要提取出first和second之间的内容-

Pattern modelRegEx = Pattern.compile("[^-]{15,}[^-]");
Matcher m = modelRegEx.matcher(temp);
String model = m.group(0);

这是此正则表达式背后的原因[^-]{15,}[^-]

我只想连字符之间是什么,所以我用了[^-]连字符之间存在多个文本实例,因此我选择了一个足够大的数字,不会在较小的匹配项中出现。所以我用{15,}

我的错误:

 Exception in thread "main" java.lang.IllegalStateException: No match found
 at java.util.regex.Matcher.group(Matcher.java:496)
 at alfaSpecificEditCheck.tabTest.main(tabTest.java:21)

当我针对以下字符串测试我的正则表达式模式时:http : //regexpal.com/匹配的模式。当我使用专门针对Java的测试器进行测试时(http://www.regexplanet.com/advanced/java/index.html),结果是找不到匹配项。

普什莫

您需要使正则表达式引擎首先找到其匹配项。通常,让我们遍历我们使用的所有匹配部分

Pattern modelRegEx = Pattern.compile("[^-]{15,}[^-]");
Matcher m = modelRegEx.matcher(temp);
while(m.find()){// <-- add this
    String model = m.group(0);
    //do stuff with each match you will find
}

顺便说一句,如果您想找到至少15个东西,然后又想找到至少16次,那么看来您的正则表达式可以重写为

Pattern modelRegEx = Pattern.compile("[^-]{16,}");
//                                         ^^

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章