R语言输出空行print r语言空格_R语言输出空行print


在R中关于正则表达式,最重要的不是记住每一个正则表达式,而是记住处理字符串的函数。

一、字符串处理函数:

这些函数是必须要记住的,正则表达式很多,单纯记忆是记不住的,用多了就记下来了。

1.切分:str_split() 按照某个“字符”切分字符串

str_split_fixed() 同上,只是可以控制切分字符串的数量

2.填补:str_pad() 在字符串首尾添加一个单一的字符,而且只能是一个

str_trim() 去掉字符串首尾的空格

str_squish() 去掉字符串中重复的空格,但至少保留一个

str_remove() 按照某个模式去掉字符串中的第一部分与该模式相同的字符

str_remove_all() 去掉字符串中的所有空格

3.检测:str_detact() 检测是否存在满足目标格式要求的字符串

str_count() 查看符合目标格式的字符串的个数

4.定位:str_locate() 返回第一个符合目标格式要求的字符串的位置

str_locate_all() 返回所有符合目标格式要求的字符串的位置

5.提取:str_extract() 提取第一个符合目标格式要求的字符串(无需位置信息)

str_extract_all() 提取所有符合目标格式要求的字符串(无需位置信息)

str_sub() 按照位置信息提取字符串

6.替换:str_replace() 将第一个符合目标格式要求的字符串替换成另一个字符串

str_replace_all() 将所有符合目标格式要求的字符串替换成另一个字符串

二、实例

1.切分


> c<-c("qwer@sina.comqwer@sina.com,asddf,234515151@qq.com")
#切分
> str_split(c,"[.com]{4}")
[[1]]
[1] "qwer@sina"           "qwer@sina"           ",asddf,234515151@qq"
[4] ""                   
#切分为指定长度
> str_split_fixed(c,"[.com]{4}",3)
     [,1]        [,2]        [,3]                     
[1,] "qwer@sina" "qwer@sina" ",asddf,234515151@qq.com"
> str_split_fixed(c,"[.com]{4}",2)
     [,1]        [,2]                                  
[1,] "qwer@sina" "qwer@sina.com,asddf,234515151@qq.com"


2.填补


R语言输出空行print r语言空格_正则表达式_02


R语言输出空行print r语言空格_字符串_03


#填补
> c<-c("qwer@sina.comqwer@sina.com,asddf,234515151@qq.com")
> str_length(c)
[1] 49
> str_pad(c,51,side = "right",pad = c("G"))
[1] "qwer@sina.comqwer@sina.com,asddf,234515151@qq.comGG"
#去掉两侧的填补字符
> d<-c("     A BC   D E F               ")
> str_trim(d,"left")
[1] "A BC   D E F               "
> str_trim(d,"right")
[1] "     A BC   D E F"
> str_trim(d,"both")
[1] "A BC   D E F"#可以看到BC和D之间有3个空格
#去掉中间重复的空格,如果有三个空格,则会去掉两个,具体看代码
> str_squish(d)
[1] "A BC D E F"
#去掉字符中的空格(或者其他字符)
> d
[1] "     A BC   D E F               "
> str_remove(d,"A")
[1] "      BC   D E F               "
> str_remove(d,"BC")
[1] "     A    D E F               "
> str_remove(d," ")
[1] "    A BC   D E F               "
> str_remove(d,"   ")
[1] "  A BC   D E F               "
> str_remove_all(d," ")
[1] "ABCDEF"


3.检测


#查看是否存在与目标模式相匹配的字符串
> c<-c("qwer@sina.comqwer@sina.com,asddf,234515151@qq.com")
> p<-"[A-Za-z0-9].{3}@w+..{2,3}"
> str_detect(c,p)
[1] TRUE
#查看存在多少个与目标模式相匹配的字符串
> c<-c("qwer@sina.comqwer@sina.com,asddf,234515151@qq.com")
> p<-"[A-Za-z0-9].{3}@w+..{2,3}"
> str_count(c,p)
[1] 3


4.定位


#只返回首个相匹配的字符串的位置
> c<-c("qwer@sina.comqwer@sina.com,asddf,234515151@qq.com")
> p<-"[A-Za-z0-9].{3}@w+..{2,3}"
> str_locate(c,p)
     start end
[1,]     1  13
#返回所有相匹配的字符串的位置
> str_locate_all(c,p)
[[1]]
     start end
[1,]     1  13
[2,]    14  26
[3,]    39  49


5.提取


#提取首个与目标模式相匹配的字符串
> c<-c("qwer@sina.comqwer@sina.com,asddf,234515151@qq.com")
> p<-"[A-Za-z0-9].{3}@w+..{2,3}"
> str_extract(c,p)
[1] "qwer@sina.com"
#提取所有与目标模式相匹配的字符串
> str_extract_all(c,p)
[[1]]
[1] "qwer@sina.com" "qwer@sina.com" "5151@qq.com"  
#注意:这里的提取方法与Rbase中的gregexpre()函数不一样substr,substring,regmatches都不同,str_exract_all不需要位置参数。
#根据位置信息提取字符串,这类似于substr()函数
> c<-c("qwer@sina.comqwer@sina.com,asddf,234515151@qq.com")
> p<-"[A-Za-z0-9].{3}@w+..{2,3}"
> str_locate_all(c,p)
[[1]]
     start end
[1,]     1  13
[2,]    14  26
[3,]    39  49
> str_sub(c,c(1,14,39),c(13,26,49))
[1] "qwer@sina.com" "qwer@sina.com" "5151@qq.com"


6.替换


#将首个与目标模式相匹配的字符串用其他字符串替换掉
> c<-c("qwer@sina.comqwer@sina.com,asddf,234515151@qq.com")
> p<-"[A-Za-z0-9].{3}@w+..{2,3}"
> str_replace(c,p,"你是傻逼")
[1] "你是傻逼qwer@sina.com,asddf,234515151@qq.com"
#将所有与目标模式相匹配的字符串用其他字符串替换掉
> str_replace_all(c,p,"你是傻逼")
[1] "你是傻逼你是傻逼,asddf,23451你是傻逼"


stringr包中有很多处理字符串的函数,还需要进一步学习。

路漫漫其修远兮,吾将上下而求索。