gpt4 book ai didi

java - 如何使用正则表达式过滤单词?

转载 作者:行者123 更新时间:2023-12-01 09:10:29 25 4
gpt4 key购买 nike

我的代码有一点问题。我想从文本中过滤出所有包含元音和总共 5 个字母的单词并将它们放入字符串数组中。

数组的长度必须是文本中匹配的总数,并且字符串数组应该被套印。诚然,这是行不通的。有什么建议或改进吗?

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class probe {

public static String[] extractWords(String text) {

String pattern = "//[aeiou]\\w{4}\\s";
Pattern p = Pattern.compile(pattern, Pattern.UNICODE_CASE);
Matcher m = p.matcher(text);

int i = 0;

String[] F = new String[i];
i = F.length;

do {
i++;

} while (m.find()); //Matches=Länge array

while (m.find()) {
String trefferText = m.group();
F = new String[]{trefferText};
}

return F;
}


public static void main(String[] args) {

String text = "";
String[] Ausgabe = probe.extractWords(text);

for (String s : Ausgabe) {
System.out.print(s + " ");
}
}
}

最佳答案

我建议首先使用外部工具来使您的正则表达式正确,例如 this one (注意“解释”选项)。你的正则表达式现在所说的是//后跟 [aeiou] 之一和其他 4 个字母和一个空格。这样就匹配 //abcde<space>但不是//abcde (缺少空格)而不是 //bacde<space> (元音不是第一个字母),可能不是你想要的。如果您想要总共 5 个字母和至少一个元音,您将需要所谓的 lookbehind 。所以,一个例子是这样的:

\w{5}(?<=[aeiou])\b

(我还建议使用单词边界 \b 来分隔单词,而不是空格)。

在外部工具中正确获取正则表达式后,您可以开始在代码中解决问题,我建议第一步为不同输入编写预期结果的测试用例,然后将程序生成的结果与测试用例(通过断言/日志记录/调试等)。

关于java - 如何使用正则表达式过滤单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40948448/

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