R中的Regex:从字符串中删除多个URL

时间:2017-02-25 19:46:32

标签: r regex

我想从字符串中删除多个网址。如果字符串如下:

this is a URL http://test.com and another one http://test.com/hi and this one http://www.test.com/

它应该返回

this is a URL and another one and this one

我尝试使用以下代码:

gsub(" ?(f|ht)(tp)(s?)(://)(.*)[.|/](.*)", "", string)

但它让我回答:

this is a URL

3 个答案:

答案 0 :(得分:2)

这个也可行,而不是(.*)我们可以使用[^\\.]*(直到域的点)和\\S*匹配到url的末尾(直到空格被发现):

gsub("\\s?(f|ht)(tp)(s?)(://)([^\\.]*)[\\.|/](\\S*)", "", string)
# [1] "this is a URL and another one and this one"

答案 1 :(得分:1)

.*将匹配,直到字符串结尾没有约束,因此第一个网址后的所有部分都被删除,通常网址不包含空格,您可以使用\\S(不匹配空白区域) )而不是.(匹配任何字符)以避免问题:

gsub(" ?(f|ht)(tp)s?(://)(\\S*)[./](\\S*)", "", string)
# [1] "this is a URL and another one and this one"

答案 2 :(得分:1)

您可以尝试使用以下正则表达式/代码

gsub("https?:\\/\\/(.*?|\\/)(?=\\s|$)\\s?", "", string)
# [1] "this is a URL and another one and this one"

<强> DEMO