R中的正则表达式:从字符串中删除多个URL
我想从一个字符串中删除多个web 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不包含空格,您可以使用
这是一个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"