我设计了一个正则表达式:
<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中不能正常工作?
在regex编译器看到字符串之前,Python已经处理了斜杠转义符,因此您必须对它进行两次转义(例如,
\\\\n
for\\n
)。但是,Python有一个非常方便的符号,只需在字符串前面加一个r
:顺便说一句,我同意这里其他人的观点,不要使用regex来解析XML。但是,希望您在以后的正则表达式中会发现这个字符串表示法有帮助。在
您不应该用regex解析XML,而应该对Python使用Universal Feed Parser。在regex上使用此库将使您的生活更轻松,并且已通过战斗测试证明是正确的。在
我个人已经用过这个图书馆很多次了,它工作起来很有魅力。在
不要用REGEX解析XML/HTML!在
使用下列方法之一:
享受吧!在
编辑:哦,是RSS。其他人说的。。。我整个星期都在这儿。在
相关问题 更多 >
编程相关推荐