2016-06-28 5 views
1

Я пытаюсь определить шаблон для сравнения последнего символа строки «y» (y $).Regex - как проверить символы перед последним символом

Моя проблема заключается в том, как проверить, является ли «y» предшествующим гласным [aeiou].

+0

Я действительно не понимаю, в чем проблема. –

+0

Итак ... '[aeiou] y $' –

+0

@ MathiasR.Jessen: вы уверены? ??? –

ответ

3

Если вы не заботитесь о захвате и просто нужен шаблон согласования, просто объединить два:

[aeiou]y$ 
2

Я также хотел разместить здесь еще один полезный подход - по крайней мере, всегда хорошо знать: Положительный касательно предшествующего текста:

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

Это будет соответствовать строки, оканчивающиеся на гласный + у, как «яй», но не «пухлые» ха-ха.

Пояснения:

  • ~: Ограничитель
  • (?<=): смотреть за блок
  • [aeiou]: матч символов среди этих гласных
  • y: матч символ буквально
  • $: соответствуют конец строки

Вы можете играть с ним здесь идеальный онлайн редактор: https://regex101.com/r/uJ3eA8/1 :)

0

спасибо. как насчет выполнения обратного? хотите совместить текст, который заканчивается на y, но y НЕ предшествует гласной?

Это, кажется, работает, я надеюсь только на одно испытание, чтобы выполнить эту работу.

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

Тогда вы можете сделать '~ (? antoni