Regex 如何使用正则表达式替换R中的文本?
我有一个字符串向量,看起来像这样:Regex 如何使用正则表达式替换R中的文本?,regex,r,string,Regex,R,String,我有一个字符串向量,看起来像这样:c(“abc@40gmail.com", "xyz@50gmail.com)。由于某些原因,@后面有随机/不同的数字,我正在尝试删除它们。使用正则表达式,我如何告诉R删除或替换“@”之后的数字,因此我以c(“abc@gmail.com", "xyz@gmail.com)。我对Regex了解不多,所以如果有人不仅能提供代码,而且能提供代码的简要解释,我将不胜感激。谢谢 一个选项是 x <- c("abc@40gmail.com", "xyz@50gmail.
c(“abc@40gmail.com", "xyz@50gmail.com)
。由于某些原因,@
后面有随机/不同的数字,我正在尝试删除它们。使用正则表达式,我如何告诉R删除或替换“@”
之后的数字,因此我以c(“abc@gmail.com", "xyz@gmail.com)
。我对Regex了解不多,所以如果有人不仅能提供代码,而且能提供代码的简要解释,我将不胜感激。谢谢 一个选项是
x <- c("abc@40gmail.com", "xyz@50gmail.com")
sub("@\\d+", "@", x)
## [1] "abc@gmail.com" "xyz@gmail.com"
x您可以使用正向查找或\K
sub("(?<=@)\\d+", "", x, perl=T)
谢谢!有什么理由不使用更简单的子(“@\\d+”,“@”,x)
?@hsl,因为它已经被提到过了。对于一个基于正则表达式的问题,我们至少可以写两个答案。:-)这就是regex的美丽之处。@Thomas有过这样的经历,这是个骗局吗?从现在起,每个文本替换问题都是一个重复的问题?“dupe”中的正则表达式是完全匹配的类型,而在这个问题中,它有点复杂complicated@ColonelBeauvel,好的,那么nvm。
sub("@\\K\\d+", "", x, perl=T)