纠错:python正则表达,下式为什么错误?

import re
str='<DT><H3 ADD_DATE="1646557099" LAST_MODIFIED="1646557099">若干文字'
btag=re.match("(?<=[>]).*",str)
btag需要匹配>号后的“若干个字符”,以上代码输出为空,不明白哪里错误,请纠正

阅读 1.2k
2 个回答

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None.
你需要的应该是re.search或是re.findall

  • re.search 返回匹配一次的对象
  • re.findall 返回全部匹配成功的列表

两个问题

  1. 你要捕获 若干文字 的话应该用 findall 或者 search
  2. 你的正则会匹配到 DT> 这里的 >.*会匹配后面整个 <H3标签
import re
s = '<DT><H3 ADD_DATE="1646557099" LAST_MODIFIED="1646557099">若干文字'
re.findall("(?<=[>])[^<]*", s)
# 结果 ['', '若干文字']

一个建议:

你的数据看起来是浏览器收藏夹导出的内容,你可以考虑用 BeautifulSoup 来处理这种不规范的 XML 数据。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题