我想为我的java程序编写一个简单的正则表达式来计算音节,但是我对于正则表达式真的很陌生,所以我没有正确写出它,我不确定是什么我做错了。我写的正则表达式是:正则表达式音节不工作
((a|i|o|u|y)?!(a|i|o|u|y|e)|e?!(a|i|o|u|y|e|\\w)|\\w)
。
(a|i|o|u|y)?!(a|i|o|u|y|e)
应该匹配所有没有被另一个元音立即跟随的非元音元音。
e?!(a|i|o|u|y|e|\\w)
应该匹配所有没有立即跟随元音或非alphebetical字符的e。
\\w
应该匹配所有不匹配的单词部分是由另外两个部分之一。
相反,我的前两个没有任何匹配,\ w匹配每个字母数字字符,所以很明显,我做了多个错误的事情。
我真的很感谢帮助,对不起,如果这个问题有点基本!
Java方法本身是在这里,但我认为它的正常工作:
public int countNumberOfSyllables(String textToCountSyllablesIn) {
int syllableCounter = 0;
Pattern regexForSyllables = Pattern.compile(
"((a|i|o|u|y)?!(a|i|o|u|y|e)|e?!(a|i|o|u|y|e|\\w)|\\w)",
Pattern.CASE_INSENSITIVE);
Matcher syllableMatcher = regexForSyllables.matcher(textToCountSyllablesIn);
while (syllableMatcher.find()) {
syllableCounter++;
}
if (syllableCounter == 0) {
syllableCounter++;
}
return syllableCounter;
}
'\ w'捕获所有的字母,数字和下划线。它不符合单词。 – oldrinb