如何在R中的两个定界符之间提取未知长度的字符串

How to extract a string of unknown length between two delimiters in R

我有一个包含用户电子邮件地址列的数据框。电子邮件地址的格式可以是任何格式。我需要创建一个名为 'agency' 的新列,其中仅包含用户电子邮件的域(换句话说,提取“@”和最后一个“.”之间的值)。

示例:

我似乎无法解决到达那里的语法...

到目前为止我能做的最好的就是删除@:

之前的部分
Azure_table <- Azure_table %>%
                  mutate(
                    agency = gsub(".*@", "", userPrincipalName)
                  )

这给了我以下结果:

如何删除最后一个点(.com、.ca 等)之后的文本?有更好的方法吗?

提前致谢!

以下连同 str_extract 应该可以满足您的需要。我没有用空字符串替换文本,而是提取了所需的信息。

pattern = "(?<=@).*(?=\.[a-zA-Z]+$)"

测试用例:

s1 <- "example.ex@subtel.com"
s2 <- "example.ex@subtel.eu"
s3 = "example@hello.something.com"
s4 <- "example@example.applestore.apple.com"


str_extract(s1, pattern)
[1] "subtel"
str_extract(s2, pattern)
[1] "subtel"
str_extract(s3, pattern)
[1] "hello.something"
str_extract(s4, pattern)
[1] "example.applestore.apple"