[英]R - Gsub return first match
我想從測試向量中提取12和0。 每次我嘗試它會給我120或12:0
TestVector <- c("12:0")
gsub("\\b[:numeric:]*",replacement = "\\1", x = TestVector, fixed = F)
我可以用什么來提取12和0.我們可以只有一個我只提取12,所以我可以改變它來提取0.我們可以用gsub專門做這個嗎?
一個選項,不涉及使用顯式正則表達式,將使用strsplit()
並拆分冒號上的時間戳:
TestVector <- c("12:0")
parts <- unlist(strsplit(TestVector, ":")))
> parts[1]
[1] "12"
> parts[2]
[1] "0"
試試這個
gsub("\\b(\\d+):(\\d+)\\b",replacement = "\\1 \\2", x = TestVector, fixed = F)
正則表達式細分
\\b #Word boundary
(\\d+) #Find all digits before :
: #Match literally colon
(\\d+) #Find all digits after :
\\b #Word boundary
我認為在R
沒有名為[:numeric:]
命名類,直到我知道,但它已命名為類[[:digit:]]
。 你可以用它作為
gsub("\\b([[:digit:]]+):([[:digit:]]+)\\b",replacement = "\\1 \\2", x = TestVector)
正如rawr所建議的那樣,更簡單直觀的方法就是簡單地用space
替換:
gsub(":",replacement = " ", x = TestVector, fixed = F)
這可以使用來自base R
scan
來完成
scan(text=TestVector, sep=":", what=numeric(), quiet=TRUE)
#[1] 12 0
或者使用str_extract
library(stringr)
str_extract_all(TestVector, "[^:]+")[[1]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.