Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用正则表达式替换R中的文本?_Regex_R_String - Fatal编程技术网

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)