Просмотр назад
(?<=...) требует, чтобы слева был
указанный фрагмент. (?<!...) запрещает
его. Просмотр вперёд описан в
lookahead.
Фиксированная ширина слева упрощает шаблон.
Синтаксис
Regex.IsMatch(text, @"(?<=a)b");
Regex.IsMatch(text, @"(?<!a)b");
Пример
Давайте найти "b" после "a":
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var m = Regex.Match("abcde", @"(?<=a)b");
Console.WriteLine(m.Value);
}
}
Результат выполнения кода:
"b"
Пример
Давайте запретить "a" слева через (?<!a):
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var m = Regex.Match("xbcde", @"(?<!a)b");
Console.WriteLine(m.Value);
}
}
Результат выполнения кода:
"b"
Пример
Давайте проверить цифру после буквы:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
var m = Regex.Match("a1b2", @"(?<=[a-z])\d");
Console.WriteLine(m.Value);
}
}
Результат выполнения кода:
"1"
Смотрите также
-
просмотр вперёд,
(?=...) и (?!...) -
якорь,
края строки -
группа,
захват фрагмента -
RegexParseException,
ошибка шаблона