R中的正则表达式:从字符串中删除多个URL

R中的正则表达式:从字符串中删除多个URL,r,regex,R,Regex,我想从一个字符串中删除多个web URL。如果字符串如下所示: 这是一个URLhttp://test.com 还有一个http://test.com/hi 这个呢http://www.test.com/ 它应该会回来 这是一个URL,另一个和这一个 我尝试使用以下代码: gsub(“?(f|ht)(tp)(s?)(:/)(.*)[.|/](.*),”,string) 但它返回给我的是: 这是一个URL*将匹配到字符串末尾,无约束,因此删除第一个URL后的所有部分,通常URL不包含空格,您可以使用

我想从一个字符串中删除多个web URL。如果字符串如下所示:

这是一个URLhttp://test.com 还有一个http://test.com/hi 这个呢http://www.test.com/

它应该会回来

这是一个URL,另一个和这一个

我尝试使用以下代码:

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

但它返回给我的是:


这是一个URL

*
将匹配到字符串末尾,无约束,因此删除第一个URL后的所有部分,通常URL不包含空格,您可以使用
\\S
(匹配无空格)而不是
(匹配任何字符)来避免问题:

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

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


此选项也可以使用,而不是
(.*)
,我们可以使用
[^\\.]*
(直到域的点)和
\\S*
匹配到url的末尾(直到找到空格):

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