我有以下代码:
a="32<2>fdssa</2>ffdsa32"
re.sub(r'<(\d+)>|</(\d+)>',"item",a)
我得到的结果:
32itemfdssaitemffdsa32
我想要结果:
32<item>fdssa</item>ffdsa32
答案 0 :(得分:3)
您需要捕获</
部分。
re.sub(r'(</?)\d+>',r"\1item>",a)
由于我将/
视为可选,(</?)
将捕获<
或</
示例:强>
>>> a="32<2>fdssa</2>ffdsa32"
>>> re.sub(r'(</?)\d+>',r"\1item>",a)
'32<item>fdssa</item>ffdsa32'
答案 1 :(得分:1)
>>> re.sub(r'(</?)\d+(?=>)', r'\1item', a)
'32<item>fdssa</item>ffdsa32'
(</?)
匹配<
或</
抓取\1
\d+
匹配一个或多个数字。
(?=>)
正面向前看,检查数字后面跟>
,但不消耗它们