我正在尝试编写一个匹配3个或更多不同元音的正则表达式。 我理解写一个正则表达式搜索3 相同的元音。
/([aeuioy])\\1{2,}/
但是,约3 不同 ...... 任何想法..
请帮我解决这个问题! 实际上我脑子里没有想法。
答案 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}
更新:如果OP正在寻找每行至少连续三个不同的元音,请使用以上正则表达式的简单版本:
(?:([aeiou])(?!.{1,2}\1)){3}
答案 3 :(得分:1)
你想要的任何东西都是元音之间的排列,所以你可以使用它:
(?=[aeouiy]{3}$)(?!.*(.).*\1).*$
(?!.*(.).*\1)
用于确保您无法匹配重复的字符!