Наборы символов в регулярках 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'", а между ними - маленькие латинские буквы и цифры, не затронув остальных.