我遇到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] 删除。
我来说两句