r - 从由特殊字符包围的字符串中提取年份数字

标签 r regex

从以下字符串中仅提取数字 2007 的好方法是什么:

some_string <- "1_2_start_2007_3_end"

在我的情况下检测年份编号的模式是:
  • 4 位数字
  • 被“_”包围

  • 我对使用正则表达式很陌生。我尝试了以下方法:
     regexp <- "_+[0-9]+_"
     names <- str_extract(files, regexp)
    

    但这并没有考虑到总是有 4 位数字并输出下划线。

    最佳答案

    我们可以使用 regex lookbehind 指定 _ 并提取后面的 4 位数字

    library(stringr)
    str_extract(some_string, "(?<=_)\\d{4}")
    #[1] "2007"
    

    如果模式在 4 位数之前和之后都显示 -,那么也使用正则表达式先行
    str_extract(some_string, "(?<=_)\\d{4}(?=_)")
    #[1] "2007"
    

    关于r - 从由特殊字符包围的字符串中提取年份数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48802732/

    相关文章:

    java - 如何使用正则表达式检查数字是否以特殊字符开头

    ruby - 将字符串转换为正则表达式 ruby

    c# - 使用 R 对 DocumentDB 资源进行访问控制

    r - Microsoft rxOneClassSVM 的预测分数意味着什么?

    r - 如何在 ggplotguide_colorsteps 中自定义标签?

    Ruby 正则表达式匹配重叠项

    regex - 提取 "?"之后的文本

    r - 使用 get() 访问结构深处的数据

    C# 正则表达式 : Get sub-capture?

    javascript - 有没有办法将此文本模式与正则表达式精确匹配?