Захватите N букв, затем 2 или три цифры - PullRequest
0 голосов
/ 04 декабря 2018

Я должен написать регулярное выражение, которое фиксирует строку: «N букв, за которыми следуют 2 или 3 цифры», где N передается в качестве аргумента функции.

Я сделал следующее: "[a-zA-Z]{" + "{number}".format(number=N) + "}[0,9]{2,3}" но это не правильно.Где ошибка?

Для N=3 должно совпадать: "abc12", "abc123", но не "a1", "abc1", "abc1234".

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Вам необходимо добавить привязки к своему выражению:

^[a-z]{3}\d{2,3}$

См. демонстрацию на regex101.com .


В целом:
^[a-z]{n}\d{2,3}$
#     ^^^
0 голосов
/ 04 декабря 2018

Ваш второй блок захватывает только цифры 0 и 9, измените его на диапазон:

"[a-zA-Z]{%d}[0-9]{2,3}"%N 

РЕДАКТИРОВАТЬ: не захватить что-то, что нематч, вы захотите добавить начальные и конечные условия к вашему регулярному выражению.Это можно сделать несколькими способами:

Текстовые привязки

Обозначения начальной и конечной линий, если ваш шаблон должен находиться на одной линии:

"^[a-zA-Z]{%d}[0-9]{2,3}$"%N

Где^ представляет начало строки, а $ представляет конец строки

Обозначение Не совпадений

Вы можете сказать не конкретных совпаденийсимволы после шаблона:

"[a-zA-Z]{%d}[0-9]{2,3}[^0-9]+"

* * * * * * * * * * * * * * * * внутри скобок будет написано «Не сопоставлять эти символы».Я недостаточно знаком с предвидениями / обратными взглядами, чтобы дать вам хороший ответ, используя их, но документы можно найти здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...