我正在编写一个regex来获取""
之间的数据。我遇到的唯一问题是最后一个"
被捕获。Regex
line = '<DT><A HREF="https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html" ADD_DATE="1567455957">Clickjacking Defense · OWASP Cheat Sheet Series</A>'
capture_regex = re.compile(r'(?<=HREF=").*?"',re.IGNORECASE)
m = capture_regex.search(line)
m.group()
打印https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html"
。如何在不包含最后一个引号的地方编写正则表达式。你知道吗
回答了我的问题。我在正则表达式中添加了所谓的非贪婪。
capture_regex = re.compile(r'(?<=HREF=").*?(?=")',re.IGNORECASE)
。通过在*
之后添加?
使它只在第一个"
处停止。你知道吗
working fiddle
编辑:调整正则表达式,因为它太贪婪了。感谢@newdeveloper指出这一点!你知道吗
这将起作用:
输出:
也许,bs4的
find_all
可以正常工作:输出
如果不是,也许,一些类似于
有
re.findall
可能在这里工作:输出
相关问题 更多 >
编程相关推荐