我试图从一个字符字符串中删除/提取时间。逻辑是我正在获取以下内容:
- 必须以0-2个数字开头
- 必须后跟单个冒号
- 可以后跟冒号或句点,但不一定需要
- 可以后跟1到无穷大的数字(如果上一个条件成立)
"6:33."
而是要提取"6:33"
,因为冒号或逗号的出现必须后跟1个或更多数字。在这种情况下,句点是句子的结尾,而不是时间的一部分。text.var <- c("R uses 1:5 for 1, 2, 3, 4, 5.",
"At 3:00 we'll meet up and leave by 4:30:20.",
"We'll meet at 6:33.", "He ran it in :22.34.")
pattern <- "\\(?[0-9]{0,2}\\)?\\:\\(?[0-9]{2}\\)?\\(?[:.]{0,1}\\)?\\(?[0-9]{0,}\\)?"
regmatches(text.var, gregexpr(pattern, text.var, perl = TRUE))
## [[1]]
## character(0)
##
## [[2]]
## [1] "3:00" "4:30:20"
##
## [[3]]
## [1] "6:33."
##
## [[4]]
## [1] ":22.34"
期望输出
## [[1]]
## character(0)
##
## [[2]]
## [1] "3:00" "4:30:20"
##
## [[3]]
## [1] "6:33"
##
## [[4]]
## [1] ":22.34"
\d{0,2}:\d{2}(?:[:.]\d+)?
。 - Federico Piazza