gpt4 book ai didi

Java 匹配器不工作

转载 作者:行者123 更新时间:2023-12-02 03:04:39 25 4
gpt4 key购买 nike

我有这个功能:

Boolean rhyme(String words) {
Pattern pattern = Pattern.compile("...");
Matcher matcher = pattern.matcher(words);
matcher.matches();
return matcher.group(1).equals(matcher.group(2));
}

其中字符串单词包含由\t分隔的两个单词,例如:read\tdead。该函数应该检查每个单词的最后三个字母是否相等,如果相等则返回 true,否则返回 false

我无法更改任何代码,我只是应该创建正则表达式以使该函数正常工作。

我当前的表达式是 (.{3}?)(?=[\t])|(.{3}$) ,当我将其插入 regex101 时似乎有效。当我在函数中使用该表达式时,出现 java.lang.IllegalStateException: No match found 错误。任何人都可以帮我找出哪里出错了,请记住,除了模式表达式之外,我无法更改任何代码。

最佳答案

不幸的是,该代码有缺陷。需要进行更多更改才能使其正常工作,因为如果没有匹配项(即单词不以相同的 3 个字母结尾),则 matcher.matches() 将返回 false。继续下一条语句将始终抛出异常,因为没有匹配项,因此没有可访问的组。

工作示例(带有调整后的正则表达式):

boolean rhyme(String words) {
Pattern pattern = Pattern.compile(".*(.{3})(?=[\\t]).*(.{3}$)");
Matcher matcher = pattern.matcher(words);

return matcher.matches() && matcher.group(1).equals(matcher.group(2));
}

关于Java 匹配器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41900094/

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