r代码删除包含@的单词

时间:2014-06-24 20:09:20

标签: regex r gsub

我想将包含符号@的所有单词替换为特定单词。我使用gsub,因此将其应用于字符向量。我一直在使用的问题是:

gsub(".*@.*", "email", data) 

字符向量中该部分的所有文本都将被删除。

有多个不同长度的电子邮件,因此我无法将字符优先级和字符设置为特定数字。

有什么建议吗?

我已经完成了关于正则表达式的阅读,但我尝试的所有内容都失败了。

以下是一个例子:

data <- c("This is an example. Here is my email: emailaddress@help.com. Thank you")

data <- gsub(".*@.*", "email", data)

它返回 [1]“电子邮件”

我想要的时候 [1]“这是一个例子。这是我的电子邮件:电子邮件。谢谢你”

2 个答案:

答案 0 :(得分:5)

您可以使用以下内容..

gsub('\\S+@\\S+', 'email', data)

<强>解释

\S匹配任何非空白字符。因此,我们在此处匹配任何非空白字符(1或更多次),前面有@后跟任何非空白字符({ {1}}或更多次)

答案 1 :(得分:1)

要在R中替换嵌入了“@”的字符串,您可以使用(将@ Fabricator的模式转换为R)

data <- c("This is an example. Here is my email: emailaddress@help.com")
gsub("[^\\s]*@[^\\s]*", "email", data, perl=T) 
data
# [1] "This is an example. Here is my email: email"