如何使用 gsub / sub 保留文本字符串的中间部分?

问题描述 投票:0回答:1

这是我想出来的,但它并不能完美地工作(更可能的是一些结果是偶然正确的):

dd <- c ("2day-2023-1-5--20-0.csv", "1day-2023-2-5--20-0.csv", "3day-2021-1-5--20-0.csv")
sub("day-.(.*)--.*", "\\1", dd)

预期输出为

"2023-1-5" "2023-2-5" "2021-1-5"
r regex
1个回答
0
投票

您可以在

day
之前匹配可选数字,然后在
--

之前匹配尽可能少的字符
\d*day-(.*?)--.*

正则表达式演示

或者使模式更具体:

\d*day-(\d{4}-\d{1,2}-\d{1,2})--.*

正则表达式演示

© www.soinside.com 2019 - 2024. All rights reserved.