Как удалить из строки все буквы кроме некоторых?

Иногда возникает задача удалить из строки все символы кроме некоторых. На мой взгляд для этой задачи регулярные выражения в самый раз задуманы.
для Oracle
select regexp_replace('АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя','[^кя]','',1,0,'i') from dual;

Для углубления в тему регулярных выражений в Oracle следует почитать это.

для C#

Regex r = new Regex("[^кя]*",RegexOptions.IgnoreCase);
Console.WriteLine(r.Replace("АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя", ""));

Для .Net кодеров полезно прочитать — Регулярные выражения в .NET Framework

6 комментариев

avatar
  • MpaK
  • 0
с кодировкой UTF-8 как я наверное понимаю C# работает отлично?

и как кстати с «жадностью» оператора * в этой реализации?
avatar
  • eye-ru
  • 0
с Unicode и производными работает нативно.

А жадность для того чтоб удалять последовательности символов не попадающих в диапазон исключения.
avatar
  • najar
  • 0
неужели диапазон нельзя задать типа [аА-яЯ]? А то портянка такая… или символьные классы как в плюсовом бусте, что-то вроде [[:alpha:]]???
avatar
  • MpaK
  • 0
портянка это скорее всего же просто пример текста, а не само регулярное выражение
avatar
  • najar
  • 0
а… понял. Тогда «кя» останется в строке)
avatar
  • xxen
  • 0
скорее «КкЯя»)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.