正则表达式找到最后一个辅音后跟一个单词中的元音

时间:2014-10-28 17:41:27

标签: regex vb.net

我想跟上最后一个辅音,然后跟一个单词的元音相匹配。现在我正在使用:

([bcdfghjklmnpqrstvwxz][aeiou])+

这匹配每个案例,而不仅仅是单词的结尾。例如:Welcome匹配come,但 匹配me

3 个答案:

答案 0 :(得分:2)

在最后添加一个单词边界修饰符(\b):

([bcdfghjklmnpqrstvwxz][aeiou]\b)+

此外,除非我误解了您尝试做的事情,否则不需要进行一次或多组比赛。以下就足够了:

[bcdfghjklmnpqrstvwxz][aeiou]\b

正如@fejese在下面指出的那样,你并不完全清楚自己要做什么。如果你试图将一个单词中的最后一个辅音与一个元音相匹配,但每个单词只有一个,则允许以下可能性。

  • 单词以(辅音)(元音)
  • 结尾
  • Word包含(辅音)(元音)并以其他元音结尾
  • Word包含(辅音)(元音)并以辅音结尾未跟随元音

在这种情况下,您可以执行以下操作:

[bcdfghjklmnpqrstvwxz][aeiou]+[bcdfghjklmnpqrstvwxz]*\b

答案 1 :(得分:1)

您可以使用负面预测来禁止再次重复该模式:

/([^aeiou][aeiou])(?!.*[^aeiou][aeiou])/

请注意,我不知道VB.net是否支持(可变长度)否定预测。

答案 2 :(得分:0)

找到最后一个辅音后跟一个单词中的元音,使用此模式

((?![aeiou])[a-zA-Z][aeiou])(?!\S*((?![aeiou])[a-z][aeiou]))

Demo