Java 元音和辅音分开(特殊要求)

Java 元音和辅音分开(特殊要求),java,regex,Java,Regex,使用正则表达式拆分单词的要求: 1) 将任意数量的元音拆分为单词开头的一个项目 2) 任何数量的辅音作为一个项目,如果后跟任何数量的元音 3) 如果单词的结尾是辅音,那么它应该出现在前面的tem中 例1:欧洲--->eu、ro、pean 例2:anound--->a,nou,ce 例3:anounc--->a,nouc 附加要求 4) 如果辅音前面有@,则应将其视为元音 5) 如果元音前面有@,则应将其视为辅音 例4:ano@nnc--->a,no@nc(此处@n类似于元音,比如o,类似于示例3

使用正则表达式拆分单词的要求:
1) 将任意数量的元音拆分为单词开头的一个项目
2) 任何数量的辅音作为一个项目,如果后跟任何数量的元音
3) 如果单词的结尾是辅音,那么它应该出现在前面的tem中
例1:欧洲--->eu、ro、pean
例2:anound--->a,nou,ce
例3:anounc--->a,nouc

附加要求
4) 如果辅音前面有@,则应将其视为元音
5) 如果元音前面有@,则应将其视为辅音
例4:ano@nnc--->a,no@nc(此处@n类似于元音,比如o,类似于示例3)
例5:anou@uc--->a,nouc(这里@u像一个辅音,比如n,类似于示例3)

非常感谢你,安德烈。用于解决前3个问题

Arrays.toString(word.split("(?<=[aeiouAEIOU])"))

Arrays.toString(word.split((?至少对于您给出的树示例来说,这似乎可以完成这项工作:

word.split("(?i)(?<=[aeiou])(?=[^aeiou].*[aeiou])")
外卖:前瞻的长度不受限制,它与
*
一起工作


下面是Scala脚本的一个小演示(使用与Java相同的正则表达式引擎):


它提供了什么输出?输出:
欧洲-->[e,u,ro,pe,a,n]
一个通知-->[a,no,u,nce]
一个通知-->[a,no,u,nc]
@send2kvd,也许将错误的输出移到问题中,而不是评论中也是个好主意。非常感谢安德烈。
我还有两个条件:
4)如果辅音前面有@,那么它将被视为元音
5)如果元音前面有@,那么它将被视为辅音
例4:annan@n——安,an@n(这里@n就像一个元音,说a)
例5:ano@au--->a,不,@au(这里@a就像一个辅音,比如说b)如果这符合你的预期,你能修正你的问题中的例子,以便其他试图解决类似问题的人能更好地理解这个问题吗?你的帖子中一定有一个灰色的“编辑”按钮。考虑研究表达式<代码>(?)
@Bohemian谢谢你的建议!不知什么原因,从未听说过这个漂亮的小功能。更新了答案。@Bohemian&Andrey Tyukin:非常感谢
european -> [eu,ro,pean]
anounce  -> [a,nou,nce]
anounc   -> [a,nounc]
for (word <- List(
  "european", "anounce", "anounc",
  "EUROPEAN", "Anounce", "AnOUnc")
) {
  val pieces = word.split("(?i)(?<=[aeiou])(?=[^aeiou].*[aeiou])")
  println("    " + word + " -> " + pieces.mkString("[", ",", "]"))
}
european -> [eu,ro,pean]
anounce -> [a,nou,nce]
anounc -> [a,nounc]
EUROPEAN -> [EU,RO,PEAN]
Anounce -> [A,nou,nce]
AnOUnc -> [A,nOUnc]