R语言 基于模式的字符串提取

falq053o  于 2023-05-04  发布在  其他
关注(0)|答案(2)|浏览(158)

我有一个字符串列表,我想提取其中的一部分。
例如:

  • red/blue/yellow/nav/white-black-绿色/white-black-green-start/OpenApi03Metadata
  • red/blue/yellow/nav/white-black-绿色/white-black-green-start/api3UpdateMetadata
  • red/teal/yellow/nav/white-black-cyan/white-black-cyan-start/api3CreateMetadata

我只想提取地址的粗体部分。字符串中的字符数各不相同,所以我不确定如何处理这一点。
非常感谢你的帮助。

odopli94

odopli941#

使用gsub和捕获组(\\1

gsub(".*(white-.*start).*", "\\1", stri)
[1] "white-black-green-start" "white-black-green-start"
[3] "white-black-cyan-start"

按位置

sapply(strsplit(stri, "/"), "[", 6)
[1] "white-black-green-start" "white-black-green-start"
[3] "white-black-cyan-start"
数据
stri <- c("red/blue/yellow/nav/white-black-green/white-black-green-start/OpenApi03Metadata", 
"red/blue/yellow/nav/white-black-green/white-black-green-start/api3UpdateMetadata", 
"red/teal/yellow/nav/white-black-cyan/white-black-cyan-start/api3CreateMetadata"
)
r6vfmomb

r6vfmomb2#

虽然您可以在base R中实现这一点,但使用stringr库中的str_extract函数要容易得多。例如:

library(stringr)

mystr <- "red/blue/yellow/nav/white-black-green/white-black-green-start/OpenApi03Metadata"

str_extract(mystr, "white-[a-z]+-[a-z]+-start")
# "white-black-green-start"

这也适用于字符串向量,并将返回与第二个参数中的正则表达式模式匹配的子字符串向量。请注意,str_extract使用字符串(或向量)作为第一个参数,使用模式作为第二个参数,这与grep等基本R函数中“先模式,后字符串”的常见语法不同。

相关问题