Вы можете использовать квантификатор , чтобы указать количество цифр и не цифр, и использовать отрицательный lookahead , чтобы проверить, что после 7 или 8 цифр больше нет следующих цифр.
Чтобы сопоставить все варианты контракта, вы можете сделать регистр нечувствительным к регистру или подобрать контракт, например [Cc]ontract
(?<=\b[Cc]ontract)\D{0,4}([0-9]{7,8})(?!\d)
Regex demo
Thatбудет соответствовать
(?<=\b[Cc]ontract)
Позитивный вид сзади, чтобы утверждать, что слева - это контракт или контракт (если вы не хотите использовать вид сзади, вы также можете сопоставить его вместо \b[Cc]ontract
) \D{0,4}
Совпадение 0-4 раза, а не цифра ([0-9]{7,8})
Захват в группе цифры 7-8 раз (?!\d)
Отрицательный взгляд, чтобы утверждать, что следуетне является цифрой
.NET поддерживает бесконечный взгляд назад.В этом случае вы можете получить совпадение, используя:
(?<=\b[Cc]ontract\D{0,4})[0-9]{7,8}(?!\d)
.NET regex demo