我是 python
regex
我知道如何使用 '?'
来解决贪心问题
下面的例子展示了它是如何工作的:
str2=' "anupam""behera" '
match2=re.search(r'".*?"',str2)
print match2.group()'
我得到输出 "anupam"
但在以下情况下不起作用:
str='<a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z">Main page</a>'
match=re.findall(r'<a href="(.*?)">(.*)</a>',str)
for link in match:
print link[0]
我希望得到 :/wiki/Main_Page
的输出。但我得到的是:"/wiki/Main_Page"title="访问主页 [z]"accesskey="z">主页
最佳答案
要解决您的问题,您需要更加具体,例如:
r'<a href="(.*?)"\s.*?>(.*)</a>'
但是,不要使用正则表达式来解析 html/xml,如 famous answer 中所述.
使用像 lxml 这样的解析器。看看这是多么简单和自然:
from lxml.etree import fromstring
tag = '<a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z">Main page</a>'
tag = fromstring(tag)
print tag.attrib.get('href')
打印:
/wiki/Main_Page
将此功能与类似 xpath 的东西结合起来或 css selectors并且您在解析任何 html 或 xml 格式时都不会遇到任何问题。
关于python - 搜索 html 标签时 python 中的贪婪正则表达式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38289273/