【发布时间】:2018-06-01 10:33:48
【问题描述】:
我正在尝试从锚标记中获取非 http(s) url。如果找到这样的 url,我需要匹配整个锚标记。
示例:
这应该匹配:<a href="example.com/index.html"> bla</a>
这不应该匹配:<a href="https://www.google.com/">bla2 </a>
到目前为止,我已经能够构建这个正则表达式:
(\<a[\s\S]*?)(?<=href)(?:(=[\"\'])|(=))(?!(http[s]?)|(ww[w]?)|(#)|(\/\/))
(?P<url>[\S]*?)(?=([\"\'])|(\s))([\s\S]*?\>)
但这给了我一个匹配,即使是 HTTP。
使用这个正则表达式:(?<=href=[\"\'])(?!(http[s]?)|(ww[w]?))(?P<url>[\S]+)(?=[\"\']) 我只能获取非 http url,但我也需要匹配 <a> 标记的全部内容。
任何建议都会很棒。如果这可以进一步改进,我很高兴。 PS:我不能用beautifulsoup。所以请为我的问题建议一个更好的正则表达式。
【问题讨论】:
-
你不能用正则表达式解析html:stackoverflow.com/questions/1732348/…
-
不要使用正则表达式,使用 HTML 解析器。
-
我知道对 html 使用正则表达式不是一个好主意,但我只能通过使用正则表达式来做到这一点。 HTML 解析器对我帮助不大。任何关于修改正则表达式以获得我需要的建议都会非常有帮助。