R 中的正则表达式查找

标签 regex r

我想从包含“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/

相关文章:

java - 匹配除 1 和 0 之外的数字

JavaScript 名称正则表达式

javascript - 如何突出显示textarea html代码的一部分

regex - 具有重复字符的正则表达式

xml - 抓取分层数据

r - 根据模式将 data.table 列拆分为许多未知数量的列

r - 安装 Xcode 9 后缺少 "libsystem_darwin.dylib"

r - ggplot geom_bar 与 stat = "sum"

R 插值极坐标等值线图

python - 在python中使用beautifulsoup获取链接名称和 "selecting"链接而不是限制?