извлечение всех .com, .in, .co.in из всех элементов

У меня есть данные в csv, которые содержат следующий столбец

ARTICLE_URL
http://twitter.com/aviryadsh/statuses/528219883872337920
http://www.ibtimes.co.in/2014

Я хочу создать другие столбцы рядом с этим столбцом, где у меня может быть только веб-адрес, например twitter.com, team-bhp.com, ibtimes.co.in,broadbandforum.co.

я пытался

text$ne=str_extract(Brand$ARTICLE_URL, '\\w+(.com)')

но это дает только URL-адреса, которые заканчиваются на .com, как также получить все остальные.


person Anurag Sharma    schedule 11.12.2015    source источник
comment
Вы можете использовать сложное регулярное выражение или две простые замены строк. Простые замены строк будут выглядеть так: tmp <- str_replace(Brand$ARTICLE_URL, "http://(www.)?", ""); text$ne <- str_replace(tmp, "/.*", "")   -  person tblznbits    schedule 11.12.2015
comment
Спасибо Марк за ваш ответ. Но проблема в том, что в этих конкретных столбцах некоторые ячейки содержат http://, некоторые имеют https://, а некоторые начинаются с www. только, так что это любой способ, который я могу дать или обусловить здесь, чтобы получить все возможные комбинации или любым другим способом ... Пожалуйста, предоставьте свои ценные материалы.   -  person Anurag Sharma    schedule 13.12.2015
comment
str_replace и str_replace_all могут принимать регулярные выражения для поиска шаблона. Так что мы можем просто немного изменить первую часть кода: str_replace_all(Brand$ARTICLE_URL, "https://|http://|www.", ""). Это должно удалить все с начала ваших URL-адресов.   -  person tblznbits    schedule 14.12.2015


Ответы (1)


В этом случае я бы рекомендовал использовать замену строки, а не извлечение строки. Это можно сделать с помощью извлечения строки, но регулярное выражение немного запутано и не так читабельно, как двухэтапный метод замены строки. Вот как бы я это сделал:

urls <- c("http://twitter.com/aviryadsh/statuses/528219883872337920", "http://www.ibtimes.co.in/2014", "https://www.ibtimes.co.in/2014")
tmp <- stringr::str_replace_all(urls, "https?://|www.", "")
domains <- stringr::str_replace_all(tmp, "/.*", "")

И затем смотрим на наш вывод:

domains
# [1] "twitter.com"   "ibtimes.co.in" "ibtimes.co.in"
person tblznbits    schedule 14.12.2015
comment
Мне очень жаль выражать искреннюю благодарность brittenb и Marc B за такую ​​огромную помощь. он работает нормально и именно то, что я хотел сделать. но все же одно хотите понять роль? войти https?://|www., ) не могли бы вы помочь мне понять. - person Anurag Sharma; 18.12.2015
comment
Конечно! Знак вопроса используется для обозначения того, что предшествующий символ может быть 0 или 1. Итак, в данном случае это означает, что в части http есть или нет s. По сути, это позволяет использовать URL-адреса http и https. Имеет ли это смысл? - person tblznbits; 18.12.2015