【发布时间】:2016-04-11 21:08:01
【问题描述】:
我编写了一个正则表达式代码来从一个 html 文件中提取锚标记并得到这个输出。
mdlinks.txt
<a href='/aspnet/aspnet_refhtmlcontrols.asp'>ASP.NET Reference</a>
<a href='/aspnet/webpages_ref_classes.asp'>Razor Reference</a>
<a href='/html/html_examples.asp'>HTML Examples</a>
<a href='/css/css_examples.asp'>CSS Examples</a>
<a href='/w3css/w3css_examples.asp'>W3.CSS Examples</a>
<a href="/js/js_examples.asp" target="_top">JavaScript Examples</a>
<a href="/js/js_dom_examples.asp" target="_top">HTML DOM Examples</a>
我必须将输出表示为
使用 sed 工具“显示文本”。
<a[\s]href=('|")([^>]+)">((?:.(?!\<\/a\>))*.)<\/a>
这是我的正则表达式,它捕获文本和 href 链接。
这是我写的 sed 命令
sed -E "s/\"<a[\s]href=('|\")([^>]+)\">((?:.(?!\<\/a\>))*.)<\/a>\"/\[\2\] \(\1\)/" mdlinks.txt
但这给了我错误。 有人能帮帮我吗?
【问题讨论】:
-
你得到什么错误?期望的输出是什么样的?
-
您正在尝试使用一些 sed 或任何其他标准 UNIX 工具(可能是 PCRE?idk)不支持的正则表达式变体。发布minimal reproducible example,以便我们为您提供帮助。
-
您不能将非捕获组
(?: )与 sed 一起使用。