R语言-正则表达式1
Posted ZhengXixide
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言-正则表达式1相关的知识,希望对你有一定的参考价值。
R语言的正则表达式主要用来处理文本资料,比如进行查找、替换等等。
首先是一些处理文本时会用到的函数:
字符串分割:strsplit()
字符串连接:paste(),paste0()
计算字符串长度:nchar(),length()
字符串截取:substr(),substring()
查看是否存在某个字符:grep(p,x) <返回匹配到的元素的下标(位置),p是一个正则表达式
grepl(p,x)<返回逻辑值false or true
举个栗子:
s<-c("123abc\\456","abc123edf") grep("123",s) #匹配“123"的位置,返回元素的下标 grepl("xcd",s)#”123“是否匹配成功,返回逻辑值
> grep("123",s) [1] 1 2 > grepl("xcd",s) [1] FALSE FALSE
字符替换:sub(p,replace,x) <对查找到的第一个字符进行替换
gsub(p,replace,x) <对查找到的所有内容进行替换
eg:
s1<-c("123edf123") sub("123","sss",s1) #替换s1里"123"为“sss",注意:找到即停止 gsub("123","sss",s1) #对找到的所有内容进行替换
> sub("123","sss",s1) [1] "sssedf123" > gsub("123","sss",s1) [1] "sssedfsss"
____________________________________________________________________
下面介绍R语言里的正则表达式
直接用例子说明问题:
1、\d 是否匹配到任意一个数字
s3<-c("123abc\\456","abc123\\def123","") grepl("\\d",s3) #是否匹配到任意一个数字
[1] TRUE TRUE
#等价于: grepl("[0-9]",s3)
2、\D是否匹配到任意一个非数字
grepl("\\D",s3) #是否匹配到任意一个非数字 #等价于: grepl("[^0-9]",s3) #^表示逻辑非
3、\w是否匹配到任何一个数字、字母、下划线
grepl("\\w",s3) #是否匹配到任何一个数字、字母、下划线 等价于: grepl("[a-zA-Z0-9]",s3)
4、\W是否匹配到任何一个非数字、字母、下划线
grepl("\\W",s3)
5、\\ 转义
grepl("\\\\",s3) #是否匹配到\\
6、. 是否匹配到任意字符
grepl (".",s3)
7、| 表示或
grepl("56|ab",s) #是否匹配到“56”或“ab"
8、^
grepl("^a",s3) #是否以a开头
9、$
grepl("6$",s3) #是否以6结尾
10、()
grepl("abc(.+)456",s3) #"abc"和"456"之间是否存在任意(.)大于等于1个(+)字符
11、[ ]
grepl("[123,456]",s3) #等价于: grepl("123|456",s3)
12、{ }
grepl("[def]{2}",s3) #"def"是否出现了不超过3次
13、*
grepl(".*",s3) #任意字符是否匹配0次以上,肯定返回true啦(包括空格)
14、+
grepl(".+",s3) #任意字符至少能匹配一次,空格返回FALSE
15、?
grepl("[456]?",s3) #匹配0次为true,匹配1次也为true
以上是关于R语言-正则表达式1的主要内容,如果未能解决你的问题,请参考以下文章