如何使用正则表达式替换R中的文本?

时间:2015-05-17 15:35:40

标签: regex r string

我有一个字符串向量,看起来像这样:c("abc@40gmail.com", "xyz@50gmail.com")。出于某种原因,@之后有随机/不同的数字,我正在尝试删除它们。使用正则表达式,如何告诉R删除或替换"@"之后的数字,因此我最终得到c("abc@gmail.com", "xyz@gmail.com")。我对Regex了解不多,所以如果有人不仅可以提供代码,还可以提供代码的简要说明,我真的很感激。谢谢!

2 个答案:

答案 0 :(得分:3)

一个选项是

x <- c("abc@40gmail.com", "xyz@50gmail.com")
sub("@\\d+", "@", x)
## [1] "abc@gmail.com" "xyz@gmail.com"

答案 1 :(得分:1)

您可以使用正面值守或\K

sub("(?<=@)\\d+", "", x, perl=T)

\\d+匹配一个或多个数字字符。因此(?<=@)强制正则表达式引擎在@符号后立即查看,然后使其匹配以下一个或多个数字字符。由于lookarounds属于PCRE系列,因此您需要启用perl=TRUE参数。

sub("@\\K\\d+", "", x, perl=T)