R:字符串截取和匹配

  1. 在指定位置截取字符串-substr() & substring() & do包 & gsub()

#substr必须设置参数first和last,否则出错
> substr("1234567",3,5)
[1] "345"
#substring可以只设置first参数,last参数缺省时则默认为1000000,指字符串的最大长度。
> substring("1234567",3)
[1] "34567"

R基础|do包(1):左截取、右截取、中间截取-腾讯云开发者社区-腾讯云 (tencent.com)

2.根据正则表达式灵活截取字符串-str_match()

library(stringr)
#提取字符串内容但无标签
> str_match(string = "ID=12-3456;name=Griffy;age=0",
+           pattern ="ID=(.*);name=(\\w+);") #.*表示匹配多个任意字符;\\w+表示匹配多个字母或数字
     [,1]                      [,2]      [,3]    
[1,] "ID=12-3456;name=Griffy;" "12-3456" "Griffy"

#提取字符串的同时给提取内容加上标签(格式:(?<标签名>匹配模式))
> str_match(string = "ID=12-3456;name=Griffy;age=0",
+           pattern ="ID=(?.*);name=(?\\w+);")
                               ID        name    
[1,] "ID=12-3456;name=Griffy;" "12-3456" "Griffy"
#上述得到的数据类型为matrix,也可以进一步转化为数据框的格式方便后续操作
ID_name <- str_match(string = "ID=12-3456;name=Griffy;age=0",
          pattern ="ID=(?.*);name=(?\\w+);")
ID_name <- data.frame(ID_name)

3.截取特定字符前面的字符串-gsub()

#截取"ABC"
m <- "ABC CDE"
#gsub()用""替换" (.*)"空格加任意字符
a <- gsub(pattern = " (.*)", "", m)
#得到的a为character

4.字符串匹配-grepl

> grepl("G", "Griffy")
[1] TRUE
> grepl("G",c("Griffy","Grape","sky"))
[1]  TRUE  TRUE FALSE

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