我试图提取以下字符串中连字符后的前四位数字:extract_public_2018_20190530180949469_58906_20110101-20111231Texas
。我正在使用以下代码:
stringr::str_extract(
"extract_public_2018_20190530180949469_58906_20110101-20111231Texas",
"-[[:digit:]]{4}"
)
Run Code Online (Sandbox Code Playgroud)
但我得到的-2011
不是2011
. 如何只提取四位数字而不提取连字符?
使用正则表达式的lookbehind,这是一种在模式之前查找某些内容而不消耗它的非贪婪方式:
stringr::str_extract(
"extract_public_2018_20190530180949469_58906_20110101-20111231Texas",
"(?<=-)[[:digit:]]{4}"
)
# [1] "2011"
Run Code Online (Sandbox Code Playgroud)