Singleline
RegexOptions.Singleline - это не режим
«вся строка текста», а правило для точки
.: она совпадает и с \n. Без
флага шаблон a.b не пройдёт через
перевод строки между a и b.
Якоря по строкам задаёт
Multiline.
Синтаксис
new Regex(@"a.b", RegexOptions.Singleline);
Пример
Давайте сопоставить a.b через перевод строки:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string text = "a\nb";
Console.WriteLine(Regex.IsMatch(text, @"a.b", RegexOptions.Singleline));
}
}
Результат выполнения кода:
True
Пример
Давайте сравнить без флага и с Singleline:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string text = "a\nb";
Console.WriteLine(Regex.IsMatch(text, @"a.b"));
Console.WriteLine(Regex.IsMatch(text, @"a.b", RegexOptions.Singleline));
}
}
Результат выполнения кода:
False
True
Пример
Давайте взять фрагмент .+ на двух строках:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string text = "abc\ndef";
var m = Regex.Match(text, @".+", RegexOptions.Singleline);
Console.WriteLine(m.Value.Contains("\n"));
}
}
Результат выполнения кода:
True
Смотрите также
-
флаг
Multiline,
который меняет ^ и $ -
символ
any,
который с точкой связан Singleline -
перечисление
RegexOptions,
куда входит Singleline -
класс
Regex,
которому передают флаги