Regex для извлечения определенных доменных имен в R - PullRequest
0 голосов
/ 21 октября 2018

У меня есть тысячи 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.Меня интересует регулярное выражение, которое может извлекать TLD, оканчивающиеся на .com и .es.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Это регулярное выражение .*\\.(.*\\.(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"

Редактировать после комментария @Corion другой ответ:

Если вас беспокоит, что URL имеет более сложные суффиксы, вы можете использовать:

.*\\.(.*\\.(com|es)).*

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

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

[1] "elpais.com"  "elpais.com"  "canaris7.es" "eldiario.es" "eldiario.es"
[6] "google.es"   "google.com"
0 голосов
/ 21 октября 2018

Я думаю, что вы просто хотите последние два компонента 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"
...