我有一个单词列表,我必须输出没有元音的单词数。到目前为止我有这个
String matchString = "[^aeiou]"
for(String s: list) if(s.matches(matchString.toLowerCase())) {
System.out.println(s);
numMatches++;
}
我更担心reg表达错误。
答案 0 :(得分:3)
将正则表达式更改为
[^aeiou]+
^-- important part
测试字符串是否来自一个或多个非元音字符。目前,您只是检查一个字符是否来自a
e
i
o
u
。
您还可以通过在开始时添加(?i)
标志来使您的正则表达式不区分大小写。这样,正则表达式中使用的字符将代表其大小写
(?i)[^aeiou]+
答案 1 :(得分:0)
看起来你把正则表达式放到小写而不是你实际测试的字符串。你想要
if (s.toLowerCase().matches(matchString)){...}
另外,我相信你的正则表达式应该是"[^aeiou]*"
,所以你可以匹配单词中的所有字符。
答案 2 :(得分:0)
这个对我有用:
[^aeiou]+$
你也应该小写字符串,而不是表达式:
if (s.toLowerCase().matches(matchString))
答案 3 :(得分:0)
import java.util.regex。*;
公共班级元音{
public static void main(String[] args) {
String s = "hello";
int count = 0;
Pattern p = Pattern.compile("[aeiou]");
Matcher m = p.matcher(s);
while (m.find()) {
count++;
System.out.println(m.start() + "...." + m.group());
}
System.out.println("number of vowels found in the string ="+count);
}
}
答案 4 :(得分:-1)
对我来说,只有/^[^aeiou]+$/
做过这份工作。