#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
, должны быть цифрами). Либо ваш ввод должен измениться, либо это сделает ваше регулярное выражение.