正则表达式为3个不同的元音相继

时间:2014-09-27 17:24:34

标签: regex

我正在尝试编写一个匹配3个或更多不同元音的正则表达式。 我理解写一个正则表达式搜索3 相同的元音。

/([aeuioy])\\1{2,}/

但是,约3 不同 ...... 任何想法..

请帮我解决这个问题! 实际上我脑子里没有想法。

4 个答案:

答案 0 :(得分:11)

寻找3个连续的元音。捕获组中的第一个。在第一次之后,使用否定前瞻检查它是否再次#1。通过该测试,捕获下一个字符。然后使用两个否定前瞻,一个用于检查它是否不是#1,另一个用于不是#2。

后一步可以“或”进入单个前瞻。

(?=[aeouiy]{3})(.)(?!\1)(.)(?!\1|\2).

你不需要对最后一个角色进行任何测试。第一个Lookahead确保它是aeouiy之一;第三个是负面的预测,确保它不是#1角色或角色#2。

答案 1 :(得分:5)

并不是说它必然是最实用的选择,但这是迄今为止唯一的一个实际的选择#34;正则表达式:

(iea|oea|uea|yea|eia|oia|uia|yia|eoa|ioa|uoa|yoa|eua|iua|oua|yua|eya|iya|oya|uya|iae|oae|uae|yae|aie|oie|uie|yie|aoe|ioe|uoe|yoe|aue|iue|oue|yue|aye|iye|oye|uye|eai|oai|uai|yai|aei|oei|uei|yei|aoi|eoi|uoi|yoi|aui|eui|oui|yui|ayi|eyi|oyi|uyi|eao|iao|uao|yao|aeo|ieo|ueo|yeo|aio|eio|uio|yio|auo|euo|iuo|yuo|ayo|eyo|iyo|uyo|eau|iau|oau|yau|aeu|ieu|oeu|yeu|aiu|eiu|oiu|yiu|aou|eou|iou|you|ayu|eyu|iyu|oyu|eay|iay|oay|uay|aey|iey|oey|uey|aiy|eiy|oiy|uiy|aoy|eoy|ioy|uoy|auy|euy|iuy|ouy)

答案 2 :(得分:3)

您可以使用这个基于前瞻性的正则表达式:

^(?:[^aeiou]*([aeiou])(?!.*?\1)){3}

RegEx Demo

更新:如果OP正在寻找每行至少连续三个不同的元音,请使用以上正则表达式的简单版本:

(?:([aeiou])(?!.{1,2}\1)){3}

New RegEx Demo

答案 3 :(得分:1)

你想要的任何东西都是元音之间的排列,所以你可以使用它:

(?=[aeouiy]{3}$)(?!.*(.).*\1).*$

(?!.*(.).*\1)用于确保您无法匹配重复的字符!