【发布时间】:2023-03-28 12:11:01
【问题描述】:
我是正则表达式的新手,我正在尝试解决以下两个问题:
-
编写一个正则表达式,从 HTML 页面中提取所有链接和相应的链接文本。例如,如果你想解析:
text1 <a href="http://example.com">hello, world</a> text2
并得到结果
http://example.com <tab> hello, world
-
做同样的事情,但也处理 <...> 嵌套的情况:
text1 <a href="http://example.com" onclick="javascript:alert('<b>text2</b>')">hello, world</a> text3
到目前为止,我仍然在第一个问题上,我已经尝试了几种方法。我认为我对第一个的最佳答案是正则表达式(?<=a href=\")(.*)(?=</a>),它给了我:http://example.com">hello, world
这对我来说似乎已经足够好了,但我不知道我应该如何处理第二部分。任何帮助或见解将不胜感激。
【问题讨论】:
-
正则表达式不适合嵌套。你应该考虑一个真正的 html 解析器。
-
那我该如何回答这个问题呢?只是说请不要使用正则表达式进行 html 解析?
-
问题来自哪里?问题 2 似乎是您不会为此使用正则表达式的确切原因。
-
我正在使用 regex101.com 测试这些,所以我使用的是 python 语法,但他们可能希望在 perl 中使用它。感谢@PatrickHaugh,(.*) 几乎给了我想要的结果。我对此非常陌生,以至于我真的不知道将结果分为第 1 组和第 2 组是否重要。
标签: javascript python regex perl