我有以下链接:
<a href="domain.com/folder/subfolder/filename.html">domain.com/folder/subfolder/filename.html</a>
我想成功
<a href="http://www.domain.com/folder/subfolder/filename.html">filename</a>
<a href="domain.com/folder/subfolder/filename.html">domain.com/folder/subfolder/filename</a>
我对第一个案例的正则表达式是<a\s*([^>]+)>[^<>]*?/?([^<>/.]+)\.?[^<>]*?</\s*a\s*>
并且它正在工作,我怀疑它是否有效并涵盖所有情况。
至于第二种情况,我没有设法让它发挥作用。
请注意,.html部分可能不存在或可以是任何扩展程序,http
也可能不存在或者是https
或ftp
。
UPD:
它应该删除网址参数,例如?param1=val1¶m2=val2
。
答案 0 :(得分:1)
(<a href="([^"?]*)[^"]*">)[^<]*(<\/a>)
(<a href="([^"?]*)[^"]*">)
第1组:包含开始标记的已捕获组
<a href="
文字文字([^"?]*)
第2组:包含任意数量不是"
或?
[^"]*
任意数量的非"
字符(这将匹配参数,而不会在该组中捕获它)">
文字文字[^<]*
任意数量的非<
字符(<\/a>)
第3组:包含结束标记的已捕获组这适用于与您在帖子中展示的情况类似的情况。如果在某些情况下它不起作用,请将它们添加到帖子中,以便我们可以使用它们进行测试。
因此,您运行正则表达式,并替换为(Group 1, opening tag) + (Group 2, file path from href) + (Group 3, closing tag)
。