R語言正則表示式
阿新 • • 發佈:2018-12-02
R語言正則表示式
本文主要說明R語言的正則表示式,主要是一些簡單的函式和stringr包常用的方法
正則表示式通常被用來檢索、替換那些符合某個模式(規則)的文字。
一些R自帶的正則函式
grep,主要引數為匹配規則,待匹配的字串,返回向量中匹配成功的字串的下標
s<-c('1234abc456','123abcdefabc')
#返回下標
grep('abc',s)
[1] 1 2
grepl,主要引數為匹配規則,待匹配的字串,返回TRUE或者FALSE
#返回FALSE OR TRUE grepl('def',s) [1] FALSE TRUE
sub,主要引數為匹配規則,替換的字串,待匹配的字串,返回查詢的第一個進行替換
s_t<-sub('abc','$$$',s)
[1] "1234$$$456" "123$$$defabc"
gsub,主要引數為匹配規則,替換的字串,待匹配的字串,返回查詢的所有進行替換
gd_t<-gsub('abc','$$$',s)
[1] "1234$$$456" "123$$$def$$$"
stringr包
安裝和載入包
install.packages("stringr")
library(stringr)
str_extract 引數為待匹配的字串,匹配規則
str_extract_all引數為待匹配的字串,匹配規則,返回所有提取匹配的字元
> str_extract(ss1,'[0-9]{1,3}')
[1] "123"
> str_extract_all(ss1,'\\d{1,3}')
[[1]]
[1] "123" "456"
str_locate引數為待匹配的字串,匹配規則,返回首個匹配成功的字元的位置
str_locate_all引數為待匹配的字串,匹配規則,返回所有匹配成功的字元的位置
> str_locate(ss1,'\\d{1,3}') start end [1,] 3 5 > str_locate_all(ss1,'\\d{1,3}') [[1]] start end [1,] 3 5 [2,] 9 11
str_replace主要引數為待匹配的字串,匹配規則,替換的字串,返回查詢的第一個進行替換
str_replace_all主要引數為待匹配的字串,匹配規則,替換的字串,返回查詢的所有進行替換
> str_replace(ss1,'\\d{1,3}','777')
[1] " 777abc456 "
> str_replace_all(ss1,'\\d{1,3}','999')
[1] " 999abc999 "
str_split,主要引數待匹配的字串,匹配規則,返回分割之後的字串
str_split_fixed,主要引數待匹配的字串,匹配規則,分割時指定的個數,返回分割之後的字串
> ss2<-"123a123a123a"
> str_split(ss2,'a')
[[1]]
[1] "123" "123" "123" ""
> str_split_fixed(ss2,'a',3)
[,1] [,2] [,3]
[1,] "123" "123" "123a"
str_count,引數待匹配的字串,匹配規則,返回匹配成功的次數
> str_count(ss2,'123')
[1] 3
str_trim,引數待匹配的字串,返回去掉空格之後的字串
> ss1
[1] " 123abc456 "
> str_trim(ss1)
[1] "123abc456"
str_c引數待合併的字串,待合併的字串,合併之後的字串
> ss1
[1] " 123abc456 "
> ss2
[1] "123a123a123a"
> str_c(ss1,ss2)
[1] " 123abc456 123a123a123a"