【问题标题】:Python2 regular expressions seem faultyPython2 正则表达式似乎有问题
【发布时间】:2012-07-28 07:26:13
【问题描述】:

在 Linux 上使用 Python 2.7.3。这是一个逐字的 shell 会话。

>>> f = open("feed.xml")
>>> text = f.read()
>>> import re
>>> regexp1 = re.compile(r'</?item>')
>>> regexp2 = re.compile(r'<item>.*</item>')
>>> regexp1.findall(text)
['<item>', '</item>', '<item>', '</item>', '<item>', '</item>', '<item>', '</item>']
>>> regexp2.findall(text)
[]

这是一个错误,还是我对 Python 正则表达式有什么不理解的地方?

【问题讨论】:

    标签: python regex python-2.7


    【解决方案1】:

    默认情况下,'.'不匹配换行符。试试

    regexp2 = re.compile(r'<item>.*</item>', re.DOTALL)
    

    【讨论】:

      【解决方案2】:

      这里是这个问题的最佳答案:不要使用正则表达式来解析 XML 等非常规语言。 It drove one S-O user insane.Another relevant link.

      【讨论】:

      • 这并没有解决他对正则表达式的误解。
      • 一个有效的观点,但我只是将此代码用于快速破解,因此不想或不需要学习任何新的 API。
      • 我终于找到了疯狂的 S-O 用户的链接。如果可以的话,我会收回我的反对票:)
      • @chepner:做了一个微不足道的(仅限空白)编辑,这样你就可以收回反对票。
      • @Jangler:快速破解通常会成为您依赖的脚本。如果您学习了新的 API,那么您可以使用新的 API 进行快速破解
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-01
      • 2011-01-25
      相关资源
      最近更新 更多