2010-12-01 3 views
1

Я пытаюсь написать регулярное выражение в Python, который принимает строку и проверяет:Строка Matching с регулярными выражениями

  1. Последний символ является гласной.
  2. Последние 2 символа не совпадают.

Это то, что я придумал:

[aeiou]$ 

Может кто-нибудь помочь мне с точки № 2: последние 2 символа не совпадают. Например, expresso действителен и expressoo недействителен.

+0

Почему бы не «выразить»? (Кстати, это «эспрессо».) – 2010-12-01 01:15:13

+0

А? Первый и последний символ «expressoo» - это не одно и то же, поэтому это должно быть действительно. Возможно, вы имели в виду "oxpresso"? – 2010-12-01 01:15:58

+0

@Steve, Извините, я его отредактировал. Посмотрите еще раз – ricky2002 2010-12-01 01:17:44

ответ

5

Возможно, было бы проще сделать это без регулярного выражения.

например if s[-2]!=s[-1] and s[-1] in 'aeiou'

2
(?i)([aeiouy])(?!\1)[aeiouy]$ 

EDIT:

Это также привлекательным для не имеющих повторения:

(?i)(?=[aeiouy]{2}$)(.)(?!\1). 
0

Лучшее, что я могу сделать:

r"\w*(?:[^a\W]a|[^e\W]e|[^i\W]i|[^u\W]u|[^o\W]o)\b" 
Смежные вопросы