问题描述
我有一个结束标签,后跟一个回车换行符(x0Dx0A),然后是一个或多个标签(x09),然后是一个新的开始标签。
像这样:
</tag1>x0Dx0Ax09x09x09<tag2> or </tag1>x0Dx0Ax09x09x09x09x09<tag2>
我应该使用什么Python正则表达式将其替换为以下内容:
</tag1><tag3>content</tag3><tag2>
提前致谢。
1楼
这是您所需要的代码,例如:
>>> import re
>>> sample = '</tag1>\r\n\t\t\t\t<tag2>'
>>> sample
'</tag1>\r\n\t\t\t\t<tag2>'
>>> pattern = '(</tag1>)\r\n\t+(<tag2>)'
>>> replacement = r'\1<tag3>content</tag3>\2'
>>> re.sub(pattern, replacement, sample)
'</tag1><tag3>content</tag3><tag2>'
>>>
请注意, \\r\\n\\t+
可能有点过于具体,尤其是在输入的生成不受您控制的情况下。
最好采用更通用的\\s*
(零个或多个空白字符)。
通常,使用正则表达式来解析XML和HTML并不是一个好主意……虽然很难在这里看到故障模式(除了在纠正模式方面的基本错误之外),您还是想告诉我们潜在的问题是什么,如果其他解决方案更好。