R替换所有作为网站的子串

时间:2015-06-12 16:21:26

标签: regex r

我试过了

gsub("/^(http?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$/","","This is a website http://www.example.com/test and needs to be removed",ignore.case=T, perl=T)

模式来自:this website

代码运行但不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

卸下:

  • ^$,匹配行的开头/结尾
  • 第一个和最后一个/,它们是分隔符,并且不是gsub所必需的
  • 空格,它可以避免你只匹配网址 - 目前,它会捕获所有行的末尾)
gsub("(http?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w\\.-]*)*\\/?","","This is a website http://www.example.com/test and needs to be removed",ignore.case=T, perl=T)

<强> Try it

答案 1 :(得分:0)

维护的 qdapRegex 包中的rm_url函数是为此而生成的。它还具有纠正留下的额外空白区域的额外好处:

library(qdapRegex)

rm_url("This is a website http://www.example.com/test and needs to be removed")
## [1] "This is a website and needs to be removed"

如果您对rm_url的正则表达式感兴趣,可以在任何使用单个正则表达式的 qdapRegex 函数上使用grab函数并了解表达式使用:

grab("rm_url")
## [1] "(http[^ ]*)|(ftp[^ ]*)|(www\\.[^ ]*)"