我想从字符串中删除多个网址。如果字符串如下:
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
答案 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 强>