Нужна помощь в поиске / замене регулярных выражений, Python - PullRequest
1 голос
/ 07 декабря 2009

Мне нужно одно правило: если последний гласный (aeiou) строки стоит перед символом из набора ('t', 'k', 's', 'tk'), то : нужно добавить сразу после гласной.

Итак, в Python, если у меня есть строка "orchestras", мне нужно правило, которое превратит его в "orchestra:s"

edit: (t, k, s, tk) будет последним символом (ами) в строке

Ответы [ 3 ]

6 голосов
/ 07 декабря 2009
re.sub(r"([aeiou])(t|k|s|tk)([^aeiou]*)$", r"\1:\2\3", "orchestras")
re.sub(r"([aeiou])(t|k|s|tk)$",            r"\1:\2",   "orchestras")

Вы не говорите, могут ли быть другие согласные после t / k / s / tk. Первое регулярное выражение учитывает это до тех пор, пока больше нет гласных, поэтому оно изменит "fist" на "fi: st", например. Если слово должно заканчиваться символом t / k / s / tk, используйте второе регулярное выражение, которое ничего не изменит для "кулака".

0 голосов
/ 26 декабря 2009

Еще один вариант замены регулярного выражения:

re.sub("(?<=[aeiou])(?=(?:t|k|s|tk)$)", ":", "orchestras")

Этот не нужно заменять, используя запомненные группы.

0 голосов
/ 08 декабря 2009

Если вы еще не поняли, я рекомендую попробовать [python_root] /tools/scripts/redemo.py Это хорошая область тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...