Обычное подвыражение ([a-zA-Z]*)
не принимает цифры, возможно, вы имели в виду ([a-zA-Z0-9]+)
или другой вариант будет (\S+)
.
Вы уже использовали \s
, знаете ли вы \S
? Поскольку вы используете \s
в качестве «разделителя» вашего токена пароля, вы также можете быть последовательным и определять пароль как состоящий из любых символов, которые не разделители.
Вы также можете упростить ваше регулярное выражение в целом следующим образом:
^(?:.*:password(\sis|:)\s(\S+)\s.*)*$
Как указывает аналогия codaddict с PHP preg_match_all
, вам также необходимо вызвать re.findall. Для этого вам нужно изменить регулярное выражение на такое, которое не перекрывается, например:
password(\sis|:)\s(\S+)
и затем вы получите в возвращаемом значении от re.findall () список совпадений, каждое из которых состоит из списка сопоставляемых групп.