Команда или в регулярках C#
Команда "'|'" - более мощный вариант
"'или'", чем набор в квадратных скобках.
Она позволяет разделить регулярку на несколько
частей. При этом искомое может попасть
либо под одну часть регулярки, либо под
другую. Посмотрим на примерах.
В данном примере шаблон поиска такой:
три буквы "'a'" или три буквы
"'b'":
using System.Text.RegularExpressions;
string txt = "aaa bbb abb";
string res = Regex.Replace(txt, @"a{3}|b{3}", "!");
Console.WriteLine(res);
В данном примере шаблон поиска такой:
три буквы "'a'" или от 1 и
более букв "'b'":
using System.Text.RegularExpressions;
string txt = "aaa bbb bbbb bbbbb axx";
string res = Regex.Replace(txt, @"a{3}|b+", "!");
Console.WriteLine(res);
В данном примере шаблон поиска такой: одна или более буквы или три цифры:
using System.Text.RegularExpressions;
string txt = "a ab abc 1 12 123";
string res = Regex.Replace(txt, @"[a-z]+|\d{3}", "!");
Console.WriteLine(res);
Вертикальная черта может делить регулярку не на две части, а на любое количество частей:
using System.Text.RegularExpressions;
string txt = "aaa bbb ccc ddd";
string res = Regex.Replace(txt, @"a+|b+|c+", "!");
Console.WriteLine(res);
Если вертикальная черта стоит внутри круглых
скобок, то "'или'" работает только
внутри этих скобок.
Для примера давайте найдем строки по
следующему шаблону: в начале стоит или
"'a'", или "'b'" один или более
раз, а потом две буквы "'x'":
using System.Text.RegularExpressions;
string txt = "axx bxx bbxx exx";
string res = Regex.Replace(txt, @"(a|b+)xx", "!");
Console.WriteLine(res);
Дана строка:
string txt = "aeeea aeea aea axa axxa axxxa";
Напишите регулярку, которая найдет строки
по шаблону: по краям стоят буквы
"'a'", а между ними - или буква
"'e'" любое количество раз или буква
"'x'" любое количество раз.
Дана строка:
string txt = "aeeea aeea aea axa axxa axxxa";
Напишите регулярку, которая найдет строки по шаблону: по краям стоят буквы "'a'", а между ними - или буква "'e'" два раза или буква "'x'" любое количество раз.