【发布时间】:2020-01-11 17:36:18
【问题描述】:
我正在编写一个正则表达式来获取"" 之间的数据。我遇到的唯一问题是最后一个" 被捕获。 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)。通过在* 之后添加? 使其仅在第一个" 处停止。
【问题讨论】:
-
使用前瞻
(?=")而不仅仅是" -
您应该避免使用正则表达式来解析 HTML 文件。应该改用
bs4。 -
(?=")查找最后一个"。bs4会起作用,我正在努力提高我的正则表达式技能。