Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpRgChS 8 of 509 menu
◀ ▶

Наборы символов в регулярках C#

Группы символов \d и \w не очень гибкие. Даже такая простая задача, как найти все буквы, но не цифры - не может быть решена ими. Для таких задач следует использовать квадратные скобки, представляющие собой операцию "'или'".

Квадратные скобки заменяют собой один символ, любой из перечисленных внутри. К примеру, вот так: x[abc]x - мы говорим, что по краям должны стоять буквы икс, а внутри - один символ: или "'a'", или "'b'", или "'c'".

После квадратных скобок можно писать операторы повторения. К примеру, вот так: x[abc]+x - мы говорим, что внутри иксов может быть любое количество символов "'a'", "'b'" и "'c'" - в любых комбинациях.

Можно не только перечислять символы, но создавать группы символов, записывая между двумя символами дефис. К примеру, вот так: [a-d] - мы получаем все символы от "'a'" до "'d'".

Посмотрим на примерах.

В данном примере шаблон поиска выглядит так: между иксами любая буква от "'a'" до "'z'":

using System.Text.RegularExpressions; string txt = "xax xbx xcx x@x"; string res = Regex.Replace(txt, @"x[a-z]x", "!"); Console.WriteLine(res);

В данном примере шаблон поиска выглядит так: между иксами любая буква от "'a'" до "'k'":

using System.Text.RegularExpressions; string txt = "xax xbx xmx x@x"; string res = Regex.Replace(txt, @"x[a-k]x", "!"); Console.WriteLine(res);

В данном примере шаблон поиска выглядит так: между иксами любая буква от "'A'" до "'Z'":

using System.Text.RegularExpressions; string txt = "xax xBx xcx x@x"; string res = Regex.Replace(txt, @"x[A-Z]x", "!"); Console.WriteLine(res);

В данном примере шаблон поиска выглядит так: между иксами любая цифра от 0 до 9:

using System.Text.RegularExpressions; string txt = "xax x1x x3x x5x x@x"; string res = Regex.Replace(txt, @"x[0-9]x", "!"); Console.WriteLine(res);

В данном примере шаблон поиска выглядит так: между иксами любая цифра от 3 до 7:

using System.Text.RegularExpressions; string txt = "xax x1x x3x x5x x@x"; string res = Regex.Replace(txt, @"x[3-7]x", "!"); Console.WriteLine(res);

В данном примере шаблон поиска выглядит так: между иксами любая буква от "'a'" до "'z'" или цифра от 1 до 9:

using System.Text.RegularExpressions; string txt = "xax x1x x3x x5x x@x"; string res = Regex.Replace(txt, @"x[a-z1-9]x", "!"); Console.WriteLine(res);

В данном примере шаблон поиска выглядит так: между иксами любая буква от "'a'" до "'z'" или буква от "'A'" до "'Z'":

using System.Text.RegularExpressions; string txt = "xax xBx xcx x5x x@x"; string res = Regex.Replace(txt, @"x[a-zA-Z]x", "!"); Console.WriteLine(res);

В данном примере шаблон поиска выглядит так: между иксами любая буква от "'a'" до "'z'" или цифры 1, 2:

using System.Text.RegularExpressions; string txt = "xax xbx x1x x2x x3x"; string res = Regex.Replace(txt, @"x[a-z12]x", "!"); Console.WriteLine(res);

В данном примере шаблон поиска выглядит так: между иксами буквы от "'a'" до "'z'" в количестве от 1 и более:

using System.Text.RegularExpressions; string txt = "xx xabesx xaadx x123x xa3x"; string res = Regex.Replace(txt, @"x[a-z]+x", "!"); Console.WriteLine(res);

Сделаем так, чтобы количество букв могло быть и ноль:

using System.Text.RegularExpressions; string txt = "xx xabesx xaadx x123x xa3x"; string res = Regex.Replace(txt, @"x[a-z]*x", "!"); Console.WriteLine(res);

Внутри квадратных скобок также можно указывать экранированные символы. Найдем последовательность букв и цифр, повторяющуюся ноль или более раз:

using System.Text.RegularExpressions; string txt = "xx x@x xadx xas12x xa3x"; string res = Regex.Replace(txt, @"x[a-z\d]*x", "!"); Console.WriteLine(res);

Если же нам нужно указать еще одни квадратные скобки, то мы их тоже обязательно экранируем:

using System.Text.RegularExpressions; string txt = "xx xrx xas[]x x3x"; string res = Regex.Replace(txt, @"x[a-z\[\]]*x", "!"); Console.WriteLine(res);

Дана строка:

string txt = "aba aea aca aza axa";

Напишите регулярку, которая найдет по следующему шаблону: по краям стоят буквы "'a'", а между ними - буква "'b'", "'e'" или "'x'".

Дана строка:

string txt = "a1a a3a a7a a9a aba";

Напишите регулярку, которая найдет по следующему шаблону: по краям стоят буквы "'a'", а между ними - цифра от 3 до 6.

Дана строка:

string txt = "aba aea afa aha aga";

Напишите регулярку, которая найдет по следующему шаблону: по краям стоят буквы "'a'", а между ними - буква от "'a'" до "'g'".

Дана строка:

string txt = "aba aea afa aha aga";

Напишите регулярку, которая найдет по следующему шаблону: по краям стоят буквы "'a'", а между ними - буква от "'a'" до "'f'" и от "'j'" до "'z'".

Дана строка:

string txt = "aAa aea aEa aJa a3a";

Напишите регулярку, которая найдет по следующему шаблону: по краям стоят буквы "'a'", а между ними - буква от "'a'" до "'f'" и от "'A'" до "'D'".

Дана строка:

string txt = "aAXa aeffa aGha aza ax23a a3sSa";

Напишите регулярку, которая найдет по следующему шаблону: по краям стоят буквы "'a'", а между ними - маленькие латинские буквы, не затронув остальных.

Дана строка:

string txt = "aAXa aeffa aGha aza ax23a a3sSa";

Напишите регулярку, которая найдет по следующему шаблону: по краям стоят буквы "'a'", а между ними - маленькие и большие латинские буквы, не затронув остальных.

Дана строка:

string txt = "aAXa aeffa aGha aza ax23a a3sSa";

Напишите регулярку, которая найдет по следующему шаблону: по краям стоят буквы "'a'", а между ними - маленькие латинские буквы и цифры, не затронув остальных.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить