R语言正则表达式

匿名 (未验证) 提交于 2019-12-02 23:57:01
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_31468321/article/details/83479313

R语言正则表达式

本文主要说明R语言的正则表达式,主要是一些简单的函数和stringr包常用的方法

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

一些R自带的正则函数
grep,主要参数为匹配规则,待匹配的字符串,返回向量中匹配成功的字符串的下标

s<-c('1234abc456','123abcdefabc') #返回下标 grep('abc',s) [1] 1 2
  • 1
  • 2
  • 3
  • 4

grepl,主要参数为匹配规则,待匹配的字符串,返回TRUE或者FALSE

#返回FALSE OR TRUE grepl('def',s) [1] FALSE  TRUE
  • 1
  • 2
  • 3

sub,主要参数为匹配规则,替换的字符串,待匹配的字符串,返回查找的第一个进行替换

s_t<-sub('abc','$$$',s) [1] "1234$$$456"   "123$$$defabc"
  • 1
  • 2

gsub,主要参数为匹配规则,替换的字符串,待匹配的字符串,返回查找的所有进行替换

gd_t<-gsub('abc','$$$',s) [1] "1234$$$456"   "123$$$def$$$"
  • 1
  • 2

stringr包

安装和载入包

install.packages("stringr") library(stringr)
  • 1
  • 2

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"
  • 1
  • 2
  • 3
  • 4
  • 5

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

str_replace主要参数为待匹配的字符串,匹配规则,替换的字符串,返回查找的第一个进行替换
str_replace_all主要参数为待匹配的字符串,匹配规则,替换的字符串,返回查找的所有进行替换

> str_replace(ss1,'\\d{1,3}','777') [1] "  777abc456  " > str_replace_all(ss1,'\\d{1,3}','999') [1] "  999abc999  "
  • 1
  • 2
  • 3
  • 4

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"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

str_count,参数待匹配的字符串,匹配规则,返回匹配成功的次数

> str_count(ss2,'123') [1] 3
  • 1
  • 2

str_trim,参数待匹配的字符串,返回去掉空格之后的字符串

> ss1 [1] "  123abc456  " > str_trim(ss1) [1] "123abc456"
  • 1
  • 2
  • 3
  • 4

str_c参数待合并的字符串,待合并的字符串,合并之后的字符串

> ss1 [1] "  123abc456  " > ss2 [1] "123a123a123a" > str_c(ss1,ss2) [1] "  123abc456  123a123a123a"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
                                </div>             <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">                 </div>

R语言正则表达式

本文主要说明R语言的正则表达式,主要是一些简单的函数和stringr包常用的方法

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

一些R自带的正则函数
grep,主要参数为匹配规则,待匹配的字符串,返回向量中匹配成功的字符串的下标

s<-c('1234abc456','123abcdefabc') #返回下标 grep('abc',s) [1] 1 2
  • 1
  • 2
  • 3
  • 4

grepl,主要参数为匹配规则,待匹配的字符串,返回TRUE或者FALSE

#返回FALSE OR TRUE grepl('def',s) [1] FALSE  TRUE
  • 1
  • 2
  • 3

sub,主要参数为匹配规则,替换的字符串,待匹配的字符串,返回查找的第一个进行替换

s_t<-sub('abc','$$$',s) [1] "1234$$$456"   "123$$$defabc"
  • 1
  • 2

gsub,主要参数为匹配规则,替换的字符串,待匹配的字符串,返回查找的所有进行替换

gd_t<-gsub('abc','$$$',s) [1] "1234$$$456"   "123$$$def$$$"
  • 1
  • 2

stringr包

安装和载入包

install.packages("stringr") library(stringr)
  • 1
  • 2

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"
  • 1
  • 2
  • 3
  • 4
  • 5

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

str_replace主要参数为待匹配的字符串,匹配规则,替换的字符串,返回查找的第一个进行替换
str_replace_all主要参数为待匹配的字符串,匹配规则,替换的字符串,返回查找的所有进行替换

> str_replace(ss1,'\\d{1,3}','777') [1] "  777abc456  " > str_replace_all(ss1,'\\d{1,3}','999') [1] "  999abc999  "
  • 1
  • 2
  • 3
  • 4

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"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

str_count,参数待匹配的字符串,匹配规则,返回匹配成功的次数

> str_count(ss2,'123') [1] 3
  • 1
  • 2

str_trim,参数待匹配的字符串,返回去掉空格之后的字符串

> ss1 [1] "  123abc456  " > str_trim(ss1) [1] "123abc456"
  • 1
  • 2
  • 3
  • 4

str_c参数待合并的字符串,待合并的字符串,合并之后的字符串

> ss1 [1] "  123abc456  " > ss2 [1] "123a123a123a" > str_c(ss1,ss2) [1] "  123abc456  123a123a123a"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
                                </div>             <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-e44c3c0e64.css" rel="stylesheet">                 </div>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!