版权声明:转载请声明出处,谢谢! https://blog.csdn.net/qq_31468321/article/details/83479313
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"