re.match(r"(/dev/)(xv|s)(d[a-z])", device)
не будет работать, потому что вам нужно экранировать скобки в (xv|s)
.Плюс match
пытается сопоставить только в начале строки.Вы хотите, чтобы re.sub
имитировал sed
В любом случае, команду sed
очень легко преобразовать.Просто разделите в соответствии с %
в вашем шаблоне и используйте префикс необработанной строки для замены \1
и тому подобное (или мешающие последовательности Python мешают)
, так что с вашими точными выражениями поиска и замены:
re.sub("(/dev/)(xv|s)(d[a-z])[0-9]*",r"\1(xv|s)\3","/dev/sda1 /dev/xvdb3")
отпечатки:
/dev/(xv|s)da /dev/(xv|s)db