Python Regex不能按预期工作

2024-05-14 00:39:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我设计了一个正则表达式

<entry>\\n<(\w+)>(.+?)</\w+>\\n</entry>

要解析以下RSS提要

^{pr2}$

问题是,使用Python的re-module,我没有得到任何匹配:

import re

regex = re.compile("""<entry>\\n<(\w+)>(.+?)</\w+>\\n</entry>""")
regex.findall(rss_string) # Returns an empty list

使用在线regex测试仪(比如this)可以正常工作,所以我不认为这是一个regex问题。在

编辑

我很清楚using regular expressions to parse a Context-Free Grammar is BAD,但在我的例子中,正则表达式可能只对RSS提要有效(顺便说一下,它是Gmail收件箱提要),而且我知道我可以使用外部库/xml解析器来完成这项任务:这只是一个练习,而不是习惯。在

问题应该是为什么下面的正则表达式在Python中不能正常工作?


Tags: importreanstringlistregexreturnsempty
3条回答

在regex编译器看到字符串之前,Python已经处理了斜杠转义符,因此您必须对它进行两次转义(例如,\\\\nfor \\n)。但是,Python有一个非常方便的符号,只需在字符串前面加一个r

regex = re.compile(r"""<entry>\\n<(\w+)>(.+?)</\w+>\\n</entry>""")

顺便说一句,我同意这里其他人的观点,不要使用regex来解析XML。但是,希望您在以后的正则表达式中会发现这个字符串表示法有帮助。在

您不应该用regex解析XML,而应该对Python使用Universal Feed Parser。在regex上使用此库将使您的生活更轻松,并且已通过战斗测试证明是正确的。在

我个人已经用过这个图书馆很多次了,它工作起来很有魅力。在

不要用REGEX解析XML/HTML!在

使用下列方法之一:

享受吧!在

编辑:哦,是RSS。其他人说的。。。我整个星期都在这儿。在

相关问题 更多 >