当前位置: 代码迷 >> python >> Python正则表达式问题
  详细解决方案

Python正则表达式问题

热度:122   发布时间:2023-06-13 14:02:57.0

我有一个结束标签,后跟一个回车换行符(x0Dx0A),然后是一个或多个标签(x09),然后是一个新的开始标签。

像这样:

</tag1>x0Dx0Ax09x09x09<tag2> or </tag1>x0Dx0Ax09x09x09x09x09<tag2>

我应该使用什么Python正则表达式将其替换为以下内容:

</tag1><tag3>content</tag3><tag2>

提前致谢。

这是您所需要的代码,例如:

>>> 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并不是一个好主意……虽然很难在这里看到故障模式(除了在纠正模式方面的基本错误之外),您还是想告诉我们潜在的问题是什么,如果其他解决方案更好。