如何在R中的两个定界符之间提取未知长度的字符串
How to extract a string of unknown length between two delimiters in R
我有一个包含用户电子邮件地址列的数据框。电子邮件地址的格式可以是任何格式。我需要创建一个名为 'agency' 的新列,其中仅包含用户电子邮件的域(换句话说,提取“@”和最后一个“.”之间的值)。
示例:
- 'user1@mydomain.com' 变为 'mydomain'
- 'u2.surname@yourdomain.ca' 变为 'yourdomain'
我似乎无法解决到达那里的语法...
到目前为止我能做的最好的就是删除@:
之前的部分
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"
我有一个包含用户电子邮件地址列的数据框。电子邮件地址的格式可以是任何格式。我需要创建一个名为 'agency' 的新列,其中仅包含用户电子邮件的域(换句话说,提取“@”和最后一个“.”之间的值)。
示例:
- 'user1@mydomain.com' 变为 'mydomain'
- 'u2.surname@yourdomain.ca' 变为 'yourdomain'
我似乎无法解决到达那里的语法...
到目前为止我能做的最好的就是删除@:
之前的部分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"