Флаги в строке шаблона в C#
В начале шаблона можно указать встроенные
флаги в круглых скобках. Они действуют
на все выражение. Часто встречаются (?i)
(без учета регистра), (?m) (многострочный
режим для "^" и "$") и (?s)
(точка захватывает перевод строки).
Без флага шаблон [a-z]+ найдет только строчные буквы:
using System.Text.RegularExpressions;
string txt = "aaa bbb CCC DDD";
string res = Regex.Replace(txt, @"[a-z]+", "!");
Console.WriteLine(res);
С флагом (?i) буквы любого регистра
попадут под шаблон:
using System.Text.RegularExpressions;
string txt = "aaa AAA bbb BBB";
string res = Regex.Replace(txt, @"(?i)[a-z]+", "!");
Console.WriteLine(res);
Точка без (?s) не совпадает с переводом
строки, поэтому перевод остается в тексте:
using System.Text.RegularExpressions;
string txt = "aaa\nbbb";
string res = Regex.Replace(txt, @".", "!");
Console.WriteLine(res);
С флагом (?s) точка захватывает и перевод
строки, поэтому заменяются все символы:
using System.Text.RegularExpressions;
string txt = "aaa\nbbb";
string res = Regex.Replace(txt, @"(?s).", "!");
Console.WriteLine(res);
Флаг (?m) ставит якорь "$" в конец
каждой строки, а не только всего текста:
using System.Text.RegularExpressions;
string txt = "aaa\nbbb";
string res = Regex.Replace(txt, @"(?m)$", "!");
Console.WriteLine(res);
Дана строка:
string txt = "Code CODE code";
Замените каждое слово code на * без учёта регистра и выведите строку.