gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:03:16 25 4
gpt4 key购买 nike

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

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,}");
// ^^

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

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