Regex 相邻元音和辅音的正则表达式?
我想写一个PCRE风格的正则表达式,它将匹配三个或更多字母的序列,其中元音和辅音是相邻的 到目前为止,我需要使用两种模式来说明两个相邻字符的实际位置Regex 相邻元音和辅音的正则表达式?,regex,Regex,我想写一个PCRE风格的正则表达式,它将匹配三个或更多字母的序列,其中元音和辅音是相邻的 到目前为止,我需要使用两种模式来说明两个相邻字符的实际位置 /([aeiou][b-df-hj-np-tv-z]|[b-df-hj-np-tv-z][aeiou])[a-z]/i /[a-z]([aeiou][b-df-hj-np-tv-z]|[b-df-hj-np-tv-z][aeiou])/i 有没有可能我遗漏了什么,而这实际上可以用一个表达式来完成 /(your first regex)|(you
/([aeiou][b-df-hj-np-tv-z]|[b-df-hj-np-tv-z][aeiou])[a-z]/i
/[a-z]([aeiou][b-df-hj-np-tv-z]|[b-df-hj-np-tv-z][aeiou])/i
有没有可能我遗漏了什么,而这实际上可以用一个表达式来完成
/(your first regex)|(your second regex)/i
如果要捕获结果,请使用[2]而不是[1]——因为有额外的参数。您可以在PCRE中使用以下选项:
/[a-z](?:([aeiou])([b-df-hj-np-tv-z])|(?2)(?1))/i
在这里,辅音和元音匹配模式在它们自己的组中被捕获,
(?1)
和(?2)
是regex子例程,它们递归相应的组模式,而不需要重复它们。您需要捕获这3个字母吗?或者简单地测试字符串中是否出现这种情况?/[a-z](?:([aeiou])([b-df-hj-np-tv-z])|(?2)(?1))/i
@Wiktor great,这很短并且对我有效。我仍然必须使用这两个表达式,在两端放置[a-z]
,以便匹配“aab”和“baa”。但这更简短,也更容易理解。从这里开始,将这两个表达式结合起来并不是什么大不了的事。