0

我有一些文本文档,其中包含:

  • 不同类型的电子邮件地址:我指的是公共域,例如gmail、yahoo等,以及私人电子邮件,例如abc@mycompany.org ...
  • 不同的超链接,例如abc.com、http ://abc.com、www.abc.org、 ...

所以,我想知道我是否可以编写一个正则表达式命令来从我的文档中删除所有此类条目以进行进一步处理,如果可以,请分享一些链接、文档或任何有用的东西。我希望使用 regex 函数从文档中删除任何类型的电子邮件 ID 或超链接。我将在 R 中实现正则表达式代码。因为,我是这个领域的新手,所以任何详细的解释都将受到高度赞赏。

所以,如果我输入如下:

“abc@mycompany.org aasd234bc.com 将保留http://abc.com www.abc.org org com .com comm in sahgo234@flkja23.in”

然后我应该得到输出:

“被保留 org com comm in”

4

2 回答 2

2

你可以尝试这样的事情:

x <- c("abc@mycompany.org", "abc.com", "http://abc.com", "www.abc.org")
gsub("(@.+$|\\..{1,3}$|(^http://)?(w{3}\\.)?)", "", x, perl=T)

如果我更好地理解您的问题,并且它是您需要删除的第一个电子邮件地址:

 gsub("(^\\b\\S+\\@\\S+\\..{1,3}(\\s)?\\b)", "", x, perl=T)

否则:

gsub("(\\b\\S+\\@\\S+\\..{1,3}(\\s)?\\b)", "", x, perl=T)

高温高压

于 2013-04-10T12:19:45.637 回答
1

我不会称之为真正的正则表达式,它可能会更慢但是......

x <- c("abc@mycompany.org aasd234bc.com to be retained abc.com www.abc.org org com .com comm in sahgo234@flkja23.in")

y <- unlist(strsplit(x, "\\s+"))
paste(y[!grepl("@|\\.com|\\.org|www\\.|\\.org|\\.in", y)], collapse=" ")

## [1] "to be retained org com comm in"

编辑:对于多行向量,将其包装为一个函数,lapply它...

x <- c("abc@mycompany.org aasd234bc.com to be retained abc.com www.abc.org org com .com comm in sahgo234@flkja23.in", 
    "abc@mycompany.org aasd234bc.com to be retained abc.com www.abc.org org com .com comm in sahgo234@flkja23.in")

FUN <- function(x) {
    y <- unlist(strsplit(x, "\\s+"))
    paste(y[!grepl("@|\\.com|\\.org|www\\.|\\.org|\\.in", y)], collapse=" ")
}
unlist(lapply(x, FUN))

## > unlist(lapply(x, FUN))
## [1] "to be retained org com comm in" "to be retained org com comm in"
于 2013-04-10T12:52:49.617 回答