Я пытаюсь проверить формат внутри большего регулярного выражения и блока текста с фиксированным столбцом.Я хотел бы соответствовать шаблону с фиксированной шириной, но только если он имеет только цифры слева и только пробел (или ни одного) справа.Полученное выражение будет использоваться в Python.
Следующие строки должны соответствовать шаблону из 17 цифр (кроме заголовка):
MATCH
*****************
A 20081122122332444 B
A 20081122122332 B
A 200811221223 B
A 2008112212 B
A 20081122 B
Но следующее не должно соответствовать
NO MATCH
*****************
A 20081122112233 1 B
A 2008112211223 1 B
A 200811221 C B
A 20081122 . B
Это регулярное выражение достаточно просто сопоставляет действительные данные: (?=\d+\s*)[\d\s]{17}
Это также, похоже, подхватывает искажающие символы: (?=\d+[\s]?[^\d])[\d\s]{17}
Отрицательный взгляд не будет работать из-запеременная позиция, и я бы предпочел не повторять шаблон для обработки всех возможных вариантов длины строки.
Казалось бы, есть элегантный способ сделать это в регулярном выражении - захватить непрерывный блок цифр, сопровождаемый непрерывным блоком пробела, в общей сложности 17 символов.