строка регулярного выражения, заключенная в двойные или одинарные кавычки - PullRequest
0 голосов
/ 10 декабря 2018

Я получил это регулярное выражение:

(\s|'|\")((?=.*[0-9])(?=.*[a-zA-Z]))([a-z0-9]{8})(\s|'|\")

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

Что не работает в выражении: будет принято что-то подобное: "1234567a'.Если строка начинается с ', она должна заканчиваться ', когда начинается с ", она должна заканчиваться " и т. Д.

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

1 Ответ

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

Если вы хотите сопоставить тот же символ в конце строки, что и символ в начале, вы можете использовать обратную ссылку для символа, как только он будет записан вгруппа захвата.

Кроме того, чтобы убедиться, что вы соответствуете в начале строки, добавьте привязку ^ в начале строки и привязку $ в конце строки:

r'''^([\s'"])(?=.*[0-9])(?=.*[a-zA-Z])[a-zA-Z0-9]{8}\1$'''

См. Демонстрационную версию regex

. ([\s'"]) - это группа захвата с идентификатором 1, поэтому обратная ссылка \1 в конце совпадает с тем же текстом, который хранится вБуфер памяти группы 1.

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