Метод re.match(..)
возвращает Match
объект (который имеет .group(x)
методы и т. Д.) Или None
в случае, если совпадение не было найдено. В вашем случае ошибка означает, что было возвращено None
;)
Хорошо, это означает, что шаблон регулярных выражений не работает для протестированных данных. Я отлаживал оба ваших случая и заметил, что в первом сценарии вы применяете шаблон к is "flash:c2900-
, но во втором примере вы проверяете регулярное выражение для file is \"flash:/c2900
, где между flash:
и c2900
мыиметь дополнительный /
, которого нет в первом примере.
Хорошо, так что есть 2 способа исправить это - если вы хотите работать с и без /
, используя одно и то же регулярное выражение,так будет
import re
output = 'System image file is "flash:c2900-universalk9-mz.SPA.156-3.M6.bin"'
print(re.search(r'"flash:/?(.*)"', output).group(1))
output = 'System image file is "flash:/c2900-universalk9-mz.SPA.156-3.M6.bin"'
print(re.search(r'"flash:/?(.*)"', output).group(1))
с использованием необязательного сопоставления регулярных выражений (?
).
Если вы хотите работать только с /
или без, вы можете использовать эти примеры.
import re
output = 'System image file is "flash:c2900-universalk9-mz.SPA.156-3.M6.bin"'
print(re.search(r'"flash:(.*)"', output).group(1))
output = 'System image file is "flash:/c2900-universalk9-mz.SPA.156-3.M6.bin"'
print(re.search(r'"flash:/(.*)"', output).group(1))