Избавиться от всех гласных в конце строки

#c# #regex #string #visual-studio-2010 #replace

#c# #регулярное выражение #строка #visual-studio-2010 #заменить

Вопрос:

Это то, что у меня есть:

 word = Regex.Replace(word, @"[aeiouyAEIOUY]z", String.Empty);
 

Но я думаю, что это избавляет только от последней буквы (если это гласная).

Так jrhyui что вернулось jrhyu бы, тогда как я действительно хочу вернуться jrh .

Ответ №1:

Вы близки. [aeiouyAEIOUY] это символьный класс, который соответствует ровно одной гласной. Вы хотите удалить все гласные из конца строки, поэтому сопоставьте один или несколько экземпляров класса character . Вы можете сделать это, добавив a в конце, например, так:

 [aeiouyAEIOUY] z
           // ^-- match any single character in the list one or more times
 

Демонстрация Regex101

Ответ №2:

Небольшая настройка вашего исходного кода должна сделать это:

 word = Regex.Replace(word, @"[aeiouyAEIOUY]*z", String.Empty);
 

Ответ №3:

Следующий шаблон будет соответствовать вашим критериям: (?i)[aeiou] (?>$)(?-i)