Regex R-Gsub返回第一场比赛

Regex R-Gsub返回第一场比赛,regex,r,Regex,R,我想从测试向量中提取12和0。每次我尝试,它要么给我120分,要么给我12分 TestVector <- c("12:0") gsub("\\b[:numeric:]*",replacement = "\\1", x = TestVector, fixed = F) TestVector一个不涉及使用显式正则表达式的选项是使用strsplit()并拆分冒号上的时间戳: TestVector <- c("12:0") parts <- unlist(strsplit(TestV

我想从测试向量中提取12和0。每次我尝试,它要么给我120分,要么给我12分

TestVector <- c("12:0")
gsub("\\b[:numeric:]*",replacement = "\\1", x = TestVector, fixed = F)

TestVector一个不涉及使用显式正则表达式的选项是使用
strsplit()
并拆分冒号上的时间戳:

TestVector <- c("12:0")
parts <- unlist(strsplit(TestVector, ":")))
> parts[1]
[1] "12"
> parts[2]
[1] "0"
TestVector部分[2]
[1] "0"
试试这个

gsub("\\b(\\d+):(\\d+)\\b",replacement = "\\1 \\2", x = TestVector, fixed = F)
正则表达式分解

我认为在
R
中没有命名为
[:numeric:][/code>的类,但它已命名为class
[:digit:][/code>。你可以把它当作

gsub("\\b([[:digit:]]+):([[:digit:]]+)\\b",replacement = "\\1  \\2", x = TestVector)
正如所建议的,一种更简单、更直观的方法是用
空间替换

gsub(":",replacement = " ", x = TestVector, fixed = F)

这可以使用
scan
from
base R

 scan(text=TestVector, sep=":", what=numeric(), quiet=TRUE)
 #[1] 12  0

或使用
str\u extract

library(stringr)
str_extract_all(TestVector, "[^:]+")[[1]]

简单的
\d+
有什么问题吗?检查这个我不知道,你能举个例子吗?但是,可能会有一个更简洁的方法,
取消列表(regmatches(TestVector,gregexpr('\\\(?[0-9,.]+',TestVector))
gsub(\\b(\\d+)(\\d+)\\b,replacement=“\\1\\2”,x=TestVector,fixed=F)
@rock321987,这很好地工作了,把它作为答案,也许还需要解释一下正则表达式
library(stringr)
str_extract_all(TestVector, "[^:]+")[[1]]