re.sub两个标签之间

时间:2015-03-23 01:16:09

标签: python regex

我想要删除以下字符串和替换文字:

original_text = '<title>Kramer vs. Kramer</title>'
replacement_text = "Kramer V Kramer"
--> '<title>Kramer V Kramer</title>'

如何通过正则表达式替换?到目前为止,我有:

re.sub(r'title>.+</title>', replacement_text, original_text)

然而,这是删除整个标记。

1 个答案:

答案 0 :(得分:1)

使用lookarounds。

>>> original_text = '<title>Kramer vs. Kramer</title>'
>>> replacement_text = "Kramer V Kramer"
>>> re.sub(r'(?<=<title>).+?(?=</title>)', replacement_text, original_text)
'<title>Kramer V Kramer</title>'
  • (?<=<title>) lookbehind声称匹配必须先打开title标记。

  • .+?会对一个或多个字符进行非贪婪的匹配。

  • (?=</title)断言匹配必须后跟结束标题标记。