2013-08-28 1 views
1

Мой вопрос: что означает команда gsub, чтобы заменить слово, начинающееся с определенной буквы. Моя основная цель - удалить все URL из данного текста.Команда gsub для замены слова, начинающегося с определенной буквы в R

Например, у меня есть текст: "refer http://www.google.com for further details". Мне нужно сделать, преобразовать текст в "refer for further details". Для этого, по существу, мне нужно написать gsub команду что-то, как показано ниже:

text <- "refer http://www.google.com for further details" 

gsub("http", "", text) 

однако это снимает только часть «HTTP» из текста. Мне нужно удалить полное слово, начинающееся с «http».

некоторые другие команды, которые я пытался:

gsub('http..', "", text) # -->removes two letters more after 'http' (the number of dots specifies the number of letters' 
gsub('^http', "", text) 
gsub('/http', "", text) 
gsub('\\\http', "", text) 

Все это не дает никаких плодотворных результатов.

Любая помощь в этом отношении будет принята с благодарностью.

+0

'gsub (" http. *? \\ s "," ", text)'? – A5C1D2H2I1M1N2O1R2T1

+0

или 'gsub (" http [^] + "," ", текст)' –

ответ

1

Это лишь наполовину ответ:

gsub("https?://.*?\\s", "", text) 
# [1] "refer for further details" 

Почему это "на полпути ответ"? Это действительно касается только ограниченного набора сценариев - тех, где URL-адрес всегда сопровождается пробелом. Однако, если он столкнулся с URL-адресом, за которым сразу последовал знак препинания, он не сработает.

Обнаружение URL-адресов является довольно распространенной задачей. Вы должны иметь возможность находить более подробные шаблоны, ища что-то вроде «regex identify URL». Скорее всего, вам нужно немного изменить его для работы с R.

+0

Большое спасибо. Но да, как вы заявили, это не сработает, если за ним последует знак препинания. Например, он не работает для «refer Http://www.google.com» из-за «после URL-адреса». Каков возможный способ достижения этого? – N2M

+0

@ N2M. Короткий ответ заключается в том, что ответа не будет прочитайте [эту статью] (http://www.regexguru.com/2008/11/detecting-urls-in-a-block-of-text/) и проверьте некоторые параметры на [этом сайте] (http : //regexlib.com/DisplayPatterns.aspx? cattabindex = 1 & categoryId = 2 & AspxAutoDetectCookieSupport = 1). Слишком много вариантов с тем, что приемлемо в URL-адресе в блоке текста, чтобы действительно иметь возможность придумать одноразовый Удачи! :) – A5C1D2H2I1M1N2O1R2T1