1

У меня проблема с решением ситуации, у меня есть это регулярное выражение для соответствия определенной последовательности цифр:

(102030)\d{10}

Используя это в качестве тестовых данных, я получаю следующие совпадения:

75277887243040354513001
55345377243014107206375
810203087654135168       <- Match
1102030698798798477      <- Match
71020307248040361799581  <- Match

Я пытаюсь игнорировать случаи, когда в строке 23 цифры, возможно ли это только с помощью регулярных выражений? Я пробовал с отрицательным взглядом в будущее, но не смог добиться этого.

2 ответа2

1

Для того, чтобы заглянуть в будущее, вам нужно что-то до этого - так что давайте начнем с

\d

Затем по минусу впереди следующие 22 цифры:

(?!\d{22})

мы отфильтровываем все строки с 23 цифрами. Тогда можете следовать вашей исходной строки

(102030)\d{10}

Таким образом, полное регулярное выражение будет

\d(?!\d{22})(102030)\d{10}

Смотрите результат на regex101.com:

0
\b(?!\d{23}\b)\d*((102030)\d{10})\d*\b

Это фиксирует совпадение в первой подгруппе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .