我想使用PCRE获取URI的列表并将其提取出来。
开始:
http://abcd.tld/products/widget1
http://abcd.tld/products/widget2
http://abcd.tld/products/review
http://1234.tld/
完成:
http://abcd.tld/products/widget1
http://1234.tld/
任何想法,亲爱的StackOverflow成员?
答案 0 :(得分:5)
答案 1 :(得分:2)
虽然它的效率很低,但可以做到......
(?<!^http://\2/.*?$.*)^(http://(.*?)/.*?$)
请不要使用此
答案 2 :(得分:1)
使用URI库解析域,然后将其插入哈希。您将写入已存在于该哈希中的任何URL,这样您最终将获得唯一链接。
这是一个Ruby示例:
require 'uri'
unique_links = {}
links.each do |l|
u = URI.parse(l)
unique_links[u.host] = l
end
unique_links.values # returns an Array of the unique links
答案 3 :(得分:0)
如果您可以将整个文件作为单个字符串使用,而不是逐行处理,那么为什么不应该这样做呢? (我不确定char范围。)
s!(\w+://[a-zA-Z0-9.]+/\S+/)([^ /]+)\n(\1[^ /]+\n)+!\1\2!
答案 4 :(得分:0)
如果你的系统有(g)awk
awk -F"/" '{
s=$1
for(i=2;i<NF;i++){ s=s"/"$i }
if( !(s in a) ){ a[s]=$NF }
}
END{
for(i in a) print i"/"a[i]
} ' file
输出
$ ./shell.sh
http://abcd.tld/products/widget1
http://1234.tld/