如何使用模式从下面的字符串载体中提取1.10E+9310120551018598AOLWDF985?我想提取两次1.10E+931012055以及一次其他值,即, for each 字符串提取一个值.

从中提取值的字符串

strings <- c('/ccr/1.10E+93_ccrdt/indices/1.10E+93_ccr_ann_123.csv',
             '/ccr/1.10E+93_ccrdt/indices/1.10E+93_obsrst_ann.csv',
             '/ccr/1012055_obsrt/indices/1012055_obsrrt.csv',
             '/ccr/1012055_obsrt/indices/1012055_ccr_ann.csv',
             '/ccr/1018598_obsrt/indices/1018598_obsrrt.csv',
             '/ccr/AOL_obsrt/indices/AOL_rrst.csv',
             '/ccr/WDF985_obsrt/indices/WDF985_rrst.csv')

推荐答案

有很多方法可以做到这一点(Copilot或ChatGPT可能会给您一个很好的答案.)也许你想

strings |> 
   ## remove everything up to the last slash
   stringr::str_remove("^.*/") |> 
   ## remove underscore and everything after it
   stringr::str_remove("_.*$")
[1] "1.10E+93" "1.10E+93" "1012055"  "1012055"  "1018598"  "AOL"      "WDF985"  

stringr::str_extract(strings, "/([^/_]*)_", group = TRUE)

或 (base R)

gsub("^.*/([^_]*)_.*$", "\\1", strings)

您也可以使用stringr::str_extract().正规运算式的先行/先行组件对于"提取[A]和[B]之间的所有字符,但结果中不包括[A]或[B]"形式的要求很有用

R相关问答推荐

在水平条形图中zoom x_轴

将一个载体的值相加,直到达到另一个载体的值

在边界外添加注释或标题

使用对管道内单元格的引用生成新变量

在R中列表的结尾添加数字载体

使用gcuminc,如何使用逗号格式化风险表?

derrr mutate case_when grepl不能在R中正确返回值

如何使用列表中多个列表中的第一条记录创建数据框

如何将R中数据帧中的任何Nas替换为最后4个值

如何从容器函数中提取conf并添加到ggplot2中?

Ggplot2中geom_tile的动态zoom

如何在R中平滑地绘制线图(不拟合)?

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

KM估计的差异:SvyKm与带权重的调查

优化从每个面的栅格中提取值

如何使用字符串从重复的模式中提取多个数字?

解析嵌套程度极高的地理数据

我是否可以使用多个变异项来构建顺序列(标记多个问题)

根据排名的顶点属性调整曲线图布局(&Q)

如何为包创建自定义roxygen2标签?