我正在使用Java正则表达式问题.我需要匹配的字符串遵循这种模式:378-Columbian Forecast Yr-NB-Q-Columbian_NB我需要提取第一个和第二个之间的内容-.
Pattern modelRegEx = Pattern.compile("[^-]{15,}[^-]");
Matcher m = modelRegEx.matcher(temp);
String model = m.group(0);
Run Code Online (Sandbox Code Playgroud)
以下是这个正则表达式背后的理由[^-]{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)
Run Code Online (Sandbox Code Playgroud)
当我在这里测试我的正则表达式模式时: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
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果你想要找到至少15个东西,那么你想要找到它至少16次,所以看起来你的正则表达式可以被重写为
Pattern modelRegEx = Pattern.compile("[^-]{16,}");
// ^^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |