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

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

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

для C#

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

Для .Net кодеров полезно прочитать — Регулярные выражения в .NET Framework
  • +2
  • 21 января 2010, 16:25
  • eye-ru

Комментарии (6)

RSS свернуть / развернуть
+
0
с кодировкой UTF-8 как я наверное понимаю C# работает отлично?

и как кстати с «жадностью» оператора * в этой реализации?
avatar

MpaK

  • 26 января 2010, 08:33
+
0
с Unicode и производными работает нативно.

А жадность для того чтоб удалять последовательности символов не попадающих в диапазон исключения.
avatar

eye-ru

  • 27 января 2010, 02:19
+
0
неужели диапазон нельзя задать типа [аА-яЯ]? А то портянка такая… или символьные классы как в плюсовом бусте, что-то вроде [[:alpha:]]???
avatar

najar

  • 28 января 2010, 12:23
+
0
портянка это скорее всего же просто пример текста, а не само регулярное выражение
avatar

MpaK

  • 28 января 2010, 16:53
+
0
а… понял. Тогда «кя» останется в строке)
avatar

najar

  • 28 января 2010, 18:55
+
0
скорее «КкЯя»)
avatar

xxen

  • 28 января 2010, 19:04

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.