Python Regx не дает никакого ответа

#python #regex

Вопрос:

Я хотел извлечь ПАНА из сообщения

 PAN=re.compile(r"[a-zA-Z]{5}[0-9]{4}[a-zA-Z]") mes="ITR for AY 2019-20 for PAN: apzxxxxx9g has been processed at CPC" abc=PAN.search(mes) print(abc)  

выход: None

Комментарии:

1. Можете ли вы привести реальный пример входной строки (без x s) и соответствующего ожидаемого вывода?

Ответ №1:

Предполагая , что вы хотите извлечь xxxxx9g , вы используете 4 повторения числа, которые не могут привести к правильному совпадению.

Вы можете изменить его на 1-4 числа ( [0-9]{1,4} ):

 PAN=re.compile(r'[a-zA-Z]{5}[0-9]{1,4}[a-zA-Z]') mes="ITR for AY 2019-20 for PAN: apzxxxxx9g has been processed at CPC" abc=PAN.search(mes) print(abc)  

выход: lt;re.Match object; span=(31, 38), match='xxxxx9g'gt;

 gt;gt;gt; print(abc.group()) xxxxx9g  

Ответ №2:

Ваше регулярное выражение ищет пять буквенных символов, за которыми следуют четыре цифры, за которыми следует одна буквенная. Ничто в вашей строке не совпадает ( apzxxxxx9g близко, но ровно три из x s, непосредственно предшествующих 9 , должны быть цифрами). Либо ваш ввод должен измениться, либо это сделает ваше регулярное выражение.