【问题标题】:r code removing words containing @r代码删除包含@的单词
【发布时间】:2014-06-24 20:09:19
【问题描述】:

我想用特定的单词替换所有包含符号 @ 的单词。我使用 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]“这是一个例子。这是我的电子邮件:电子邮件。谢谢”

【问题讨论】:

  • 欢迎来到 Stack Overflow!请考虑添加一个small reproducible example,以便我们更好地理解并更轻松地回答您的问题。
  • .* 匹配所有字符,也许你想要[^\s]*@[^\s]*
  • 如果您只想替换“@”符号,只需使用gsub("@", "email", data) ,否则您与该模式匹配的任何其他内容也会被替换。
  • @user3772674 添加新信息时,最好编辑您的原始问题,而不是在 cmets 中添加其他信息。

标签: regex r gsub


【解决方案1】:

您可以使用以下..

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

解释

\S 匹配任何 非空格 字符。所以这里我们匹配任何 non-whitespace 字符(1 或更多次),前面是 @,后跟任何 non-whitespace 字符(1 或更多次)

【讨论】:

  • @user3772674 很高兴我能帮上忙。
【解决方案2】:

要在 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"

【讨论】:

  • 这里不需要perl=T =)
猜你喜欢
  • 2016-03-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多