gpt4 book ai didi

java - 如何使用正则表达式删除元音多于辅音的单词

转载 作者:行者123 更新时间:2023-12-01 07:43:20 24 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序可以从文本中删除元音多于辅音的单词。例如:

 StringBuilder text = new StringBuilder("I quite hate regular expressions");

我必须编写代码来返回不包含“quite”和“I”的text,因为这些单词包含的元音多于辅音。它还应该与其他文本示例一起使用。

我对Java正则表达式很不好,所以我希望你们能帮助我。我已经尝试过了

public String removeWordsWithMoreVowels(final StringBuilder text) {
Pattern pattern = Pattern.compile("regular expression goes here");
Matcher matcher = pattern.matcher(text);
System.out.println(matcher.replaceAll(""));
return matcher.replaceAll("");
}

我怎样才能实现这一目标?欢迎所有提示和建议。提前致谢。

最佳答案

这不能用正则表达式来完成。问题是 vncn 不适合正则表达式中的无状态、上下文无关的语法。将正则表达式与 lambda 一起使用,可以使用一些代码。

public String removeWordsWithMoreVowels(final StringBuilder text) {
Pattern pattern = Pattern.compile("(?i)\\b[a-z]+\\b");
Matcher matcher = pattern.matcher(text);
return matcher.replaceAll(mr -> {
int vowels = mr.group().replaceAll("(?i)[^aeiou]", "").length();
return vowels > mr.group().length() - vowels ? "" : mr.group();
});
}

上面是一个轻微的简化,因为它没有处理通过删除来删除空格。

  • (?i) 不区分大小写
  • [^aeiou] - 不是元音;辅音(关于y:也许应该先删除它们)

关于java - 如何使用正则表达式删除元音多于辅音的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60819596/

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