正则表达式 - 如何在最后一个字符之前测试字符

时间:2016-06-28 23:19:53

标签: regex

我正在尝试确定用于比较字符串的最后一个字符的模式是“y”(y $)。

我的问题是如何测试“y”是否先于元音[aeiou]。

3 个答案:

答案 0 :(得分:3)

如果您不关心捕捉并且只需要匹配的模式,只需将两者结合起来:

[aeiou]y$

答案 1 :(得分:2)

我还想在这里发布另一种有用的方法 - 至少知道这一点总是好的:积极的观察:

~(?<=[aeiou])y$~

它会匹配以元音+ y结尾的字符串,如'yay'而不是'chubby'哈哈。

说明:

  • ~:delimiter
  • (?<=):看后面的块
  • [aeiou]:匹配元音中的字符
  • y:字面匹配字符
  • $:匹配字符串结尾

您可以在完美的在线编辑器中使用它:https://regex101.com/r/uJ3eA8/1 :)

答案 2 :(得分:0)

谢谢你。如果做反过来怎么样?想要匹配以y结尾的文本,但y不是元音前面的?

这似乎有效,我希望只有一个测试来完成这项工作。

Regex:Match(myText, "y$", RegexOptions:IgnoreCase):Success and 
  not Regex:Match(myText, "[aeiou]+.$", RegexOptions:IgnoreCase):Success