我想从包含“M_South_Africa_5_14”和“P_Zimbabwe_Tot”等字符串的向量中提取国家/地区。我一直尝试使用单个 grep 或 stringr::str.extract 语句来完成此操作,但没有成功。当然,我可以用“_”断开字符串,然后收集碎片,但是可以使用正则表达式来做到这一点吗?
grep(value = TRUE,
x = 'M_South_Africa_5_14',
pattern = '(?!^[PMF]{1})(?![_])([A-Za-z]{2,20})[_][A-Za-z]{2,20}(?!$)|(?!^[PMF]{1})(?![_])([A-Za-z]{2,20})',
perl = TRUE)
当然,简化这个正则表达式怪物会很棒,但我实际上想知道是否可以在 R 上运行正则表达式查找。
最佳答案
这适用于您的示例:
> library(gsubfn)
> x <- c('M_South_Africa_5_14', 'P_Zimbabwe_Tot')
> pat <- "_(.*\\D)_"
> strapplyc(x, pat)
[[1]]
[1] "South_Africa"
[[2]]
[1] "Zimbabwe"
关于R 中的正则表达式查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992104/