R语言笔记

R语言正则

R语言正则内容

grep函数

str(grep)

function(pattern,x,ignore.case = FALSE,perl=FALSE,value=FALSE,fixed=FALSE,useBytes = FALSE , invert = FALSE)
pattern 模式
ignore.case 是否忽略大小写
value 是否将相应索引的值作为返回值
x 需要转化的数据

ss<-c("1314","abc","a b c","ABC","aB12c","13ab14c")
grep("ab",ss)

筛选ss中含有小写字母ab的字符串
得到相应索引
2 6

grep("ab",ss,ignore.case= TRUE)

得到2 4 5 6

grep("ab",ss,value = TURE)

“abc” “13ab14c”

grep("ab",c("acb","ba"))

integer(0)

正则表达式

1.元字符

  • 表示自身的字符:字母、数字
  • 任意字符:.
  • 表示为位置:^$
  • 表示数量:*?+
  • 括号类
    | []
    | {m,n}
    | ()
  • 转义字符:\?\*
  • 其他: \t \n \r \b \s \S \w \W \d \D
grep("a.+b",c("ab","a b","A b","a#b","a##b"))
grep("a.?b",c("ab","a b","A b","a#b","a##b"))
grep("a.*b",c("ab","a b","A b","a#b","a##b"))
grep("a.{1,3}b",c("ab","a b","A b","a#b","a##b"))

1 .‘a’‘b’ 连个字符中含有的字符数
2. 大于等于1
3. 0-1
4. 任意多个
5. 1-3

grep("^1",ss)

表示查找以’1’为开头的字符

grep("4$",ss)

表示查找以“4’结束的字符
注意^ &的位置

grep("a[2c]b",c("a2b","a1cb","acb","ab"))

表示查找’a2b‘ 或者 ‘acb’
(即[2,c]其中当且仅当出现一个的时候)

grep("a[2c]*b",c("a2b","a1cb","acb","ab"))

与上例相比多查找了 “ab”
(即[2,c]中的元素出现零个或者多个的时候)

grep("a[1-9]b",c("a2b","a1cb","acb"))

结果为 “a2b”

grep("a[a-z]b",c("a2b","a1cb","acb"))

结果为 “acb“

grep("a[^c]b",c("a2b","a1cb","acb"))

表示查找ab之间字符不是’c’的
即’a2b’

grep("(13|13ab).4",c("a2b","a1cb","acb","13ab14c","1314"))

() 表示字符的组合
结果为 ”1314“ ”13ab14c“
(13|13ab).4 =》 (13).4 或者 (13ab).4

gsub 函数

?gsub

gsub(pattern,repalcement,x,ignore.case=FALSE,perl=FALSE, fixed = FALSE , useBytes = FALSE)
replacement = 要替换的内容

grep("(13|13ab).4","xxxx",ss)

”1314“ ”13ab14c“ => “xxxx” “xxxxc”

grep("(13|13ab).4","\\1",ss)

“\1” 表示第一次匹配的内容
”1314“ ”13ab14c“ => “13” “13abc”

表示符号自身----转义字符

grep("a\\?b",c("acb","a?b","a??b"))

得到”a?b“的索引
两个反斜杠加上字符 表示转义字符
\t \n \r \b \s \S \w \W \d \D 分别表示 \t制表符 \n回车符 \r换行符 \b文字间隔符号 \s空格符号 \S表示不是空格的符号 \w构成文字的字符 \W 表示不是构成文字的字符
注意R语言中要用两个\

grep("^\\w+&",ss)

表示查找从开头到结尾都是文字字符的

grep("\\W",ss)

表示查找含有非文字字符的字符串

grep("\\d",ss)

查找含有数字的字符串

grep("\\D",ss)

查找不含有数字的字符串

链接: link.

实例

list.files(path=".",pattern = NULL, all.files = FALSE , full.names = FALSE , recursive= FALSE, ignore.case= , include.dirs= FALSE)
all.files 是否查找隐藏文件
full.names 是否使用文件的全名称包括文件类型
recurisive 是否查找子目录

px<-"/user/share"
fx<- list.files(path=px,pattern = "\\.jpg&",recursive = TRUE, full.names=TRUE,ignore.case= TRUE)
head(fx)

查找含有".jpg"的字符串

?file##查看文件的相应方法
head(file.size(fx))##显示文件大小

你可能感兴趣的:(笔记,r语言)