Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分组相邻正则表达式匹配_Java_Regex - Fatal编程技术网

Java 分组相邻正则表达式匹配

Java 分组相邻正则表达式匹配,java,regex,Java,Regex,我正在尝试构建一个正则表达式,该正则表达式在以下条件下查找单词中的音节数: 元音被算作音节 两个或两个以上的连续元音被算作一个音节 如果“e”是单词中的最后一个字母,则忽略它(不要将其视为音节) 元音是:“a”、“e”、“i”、“o”、“u”和“y” 我提出了[e][aeiou]*(?=[a-z])|[aiouy][aiouy]*(?=[a-z]),您可以对其进行测试。正如在测试中看到的,单词“他们”作为两个单独的匹配出现(e和y分别计算),这是一个问题。如何解决这个问题 另外,如果可能的话

我正在尝试构建一个正则表达式,该正则表达式在以下条件下查找单词中的音节数:

  • 元音被算作音节
  • 两个或两个以上的连续元音被算作一个音节
  • 如果“e”是单词中的最后一个字母,则忽略它(不要将其视为音节)
  • 元音是:“a”、“e”、“i”、“o”、“u”和“y”
我提出了
[e][aeiou]*(?=[a-z])|[aiouy][aiouy]*(?=[a-z])
,您可以对其进行测试。正如在测试中看到的,单词“他们”作为两个单独的匹配出现(e和y分别计算),这是一个问题。如何解决这个问题

另外,如果可能的话,如果对regex解决方案有一个解释就太好了。

是我的结论,但我相信它可以得到很大的改进

[aeiouyAEIOUY]+(?!(?<=[eE])[^a-zA-Z]|$)
否定前瞻(我们在[aeiouyeiouy]+之后不想要的东西):

嵌套的前瞻性(在否定的前瞻性之后我们想要做的):


它工作得很好,感谢您的详细解释和解决方案!
[aeiouyAEIOUY]+
(?!
(?<=[eE])
[^a-zA-Z]|$)