Просмотр вперёд
(?=...) - позитивный просмотр: дальше
должно совпасть условие. (?!...) -
негативный: дальше не должно совпасть.
Сам фрагмент условия в результат не входит.
Симметричный просмотр назад -
lookbehind.
Синтаксис
Regex.IsMatch(text, @"a(?=b)");
Regex.IsMatch(text, @"a(?!b)");
Пример
Давайте проверить a(?=b):
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var m = Regex.Match("abcde", @"a(?=b)");
Console.WriteLine(m.Value);
}
}
Результат выполнения кода:
"a"
Пример
Давайте применить негативный просмотр (?!...):
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
bool ok = Regex.IsMatch("abcde", @"a(?=b)");
bool bad = Regex.IsMatch("axcde", @"a(?=b)");
Console.WriteLine(ok + " " + bad);
}
}
Результат выполнения кода:
True False
Пример
Давайте найти цифру перед "5":
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var m = Regex.Match("12345", @"\d(?=5)");
Console.WriteLine(m.Value);
}
}
Результат выполнения кода:
"4"
Смотрите также
-
просмотр назад,
(?<=...) и (?<!...) -
группа,
захват текста -
якорь,
привязка к краю -
Regex,
класс поиска