正则表达式提取R中的特定域名

正则表达式提取R中的特定域名,r,regex,stringr,R,Regex,Stringr,我有数千个网址,我想提取域名。我正在使用以下正则表达式来完成此操作:http://https://www\\\. 这样可以提取域,如下所示: elpais.com veren.elpais.com canaris7.es vertele.eldiario.es eldiario.es 问题是我只想提取域——也就是说,vertele.eldiario.es和eldiario.es都应该给我eldiario.es 我也使用过urltools,但它似乎不起作用。我需要提取域,因为我需要在所有URL中

我有数千个网址,我想提取域名。我正在使用以下正则表达式来完成此操作:
http://https://www\\\.

这样可以提取域,如下所示:

elpais.com
veren.elpais.com
canaris7.es
vertele.eldiario.es
eldiario.es
问题是我只想提取域——也就是说,vertele.eldiario.es和eldiario.es都应该给我eldiario.es


我也使用过
urltools
,但它似乎不起作用。我需要提取域,因为我需要在所有URL中有一个适当的特定域计数。我对可以提取以.com和.es结尾的TLD的正则表达式感兴趣。

我想您只需要URL的最后两个组件。您可以从
sub
和正则表达式中获得它

URLs = c("http://www.elpais.com",
"http://veren.elpais.com",
"http://www.canaris7.es",
"http://vertele.eldiario.es",
"http://eldiario.es")

sub(".*\\b(\\w+\\.\\w+)", "\\1", URLs)
[1] "elpais.com"  "elpais.com"  "canaris7.es" "eldiario.es" "eldiario.es"

我认为您只需要URL的最后两个组件。您可以从
sub
和正则表达式中获得它

URLs = c("http://www.elpais.com",
"http://veren.elpais.com",
"http://www.canaris7.es",
"http://vertele.eldiario.es",
"http://eldiario.es")

sub(".*\\b(\\w+\\.\\w+)", "\\1", URLs)
[1] "elpais.com"  "elpais.com"  "canaris7.es" "eldiario.es" "eldiario.es"

此正则表达式
*\\.(.\\\.(com|es))
sub一起使用以调用组(位于括号之间)即可

url <-  c(
  "http://www.elpais.com",
  "http://www.veren.elpais.com",
  "http://www.canaris7.es",
  "http://www.vertele.eldiario.es",
  "http://www.eldiario.es"
)

sub(".*\\.(.*\\.(com|es))", "\\1", url)

[1] "elpais.com"  "elpais.com"  "canaris7.es" "eldiario.es" "eldiario.es"

此正则表达式
*\\.(.\\\.(com|es))
sub一起使用以调用组(位于括号之间)即可

url <-  c(
  "http://www.elpais.com",
  "http://www.veren.elpais.com",
  "http://www.canaris7.es",
  "http://www.vertele.eldiario.es",
  "http://www.eldiario.es"
)

sub(".*\\.(.*\\.(com|es))", "\\1", url)

[1] "elpais.com"  "elpais.com"  "canaris7.es" "eldiario.es" "eldiario.es"

你可以把字符串倒过来,把第一个点后面的所有东西都倒过来,我不知道当域名有前缀时这怎么解决问题你可以把字符串倒过来,把第一个点后面的所有东西都倒过来,反过来说,如果域名有前缀,我看不出这是如何解决问题的。这对于
google.co.hk
google.com.br
-查看需要考虑的后缀列表。但是OP要求url“以.com和.es结尾”@Corion,我在更新的答案中提到了这一点,但是保留
.com
.es
来匹配OP的问题对于
google.co.hk
google.com.br
这样的域来说,这将失败-查看需要考虑的后缀列表。但是OP要求url“以.com和.es结尾”@Corion,我在更新的答案中提到了这一点,但是保留
.com
.es
以匹配OP的问题