正则表达式和字符串处理.docx

正则表达式和字符串处理.docx

ID:27195260

大小:25.82 KB

页数:8页

时间:2018-12-01

正则表达式和字符串处理.docx_第1页
正则表达式和字符串处理.docx_第2页
正则表达式和字符串处理.docx_第3页
正则表达式和字符串处理.docx_第4页
正则表达式和字符串处理.docx_第5页
资源描述:

《正则表达式和字符串处理.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、处理文本是每一种计算机语言都应该具备的功能,但不是每一种语言都侧重于处理文本。R语言是统计的语言,处理文本不是它的强项,perl语言这方面的功能比R不知要强多少倍。幸运的是R语言的可扩展能力很强,DNA/RNA/AA等生物序列现在已经可以使用R来处理。R语言处理文本的能力虽然不强,但适当用用还是可以大幅提高工作效率的,而且有些文本操作还不得不用。高效处理文本少不了正则表达式(regularexpression),虽然R在这方面先天不足,但它处理字符串的绝大多数函数还都使用正则表达式。TableofContents·1正则表达

2、式简介·2字符数统计和字符翻译·2.1nchar和length·2.2tolower,toupper和chartr·3字符串连接·3.1paste函数·4字符串拆分·4.1strsplit函数·5字符串查询:·5.1grep和grepl函数:·5.2regexpr、gregexpr和regexec·6字符串替换·6.1sub和gsub函数·7字符串提取·7.1substr和substring函数·8其他:·8.1strtrim函数·8.2strwrap函数·8.3match和charmatch1 正则表达式简介正则表达式不是

3、R的专属内容,这里只做简单介绍,更详细的内容请查阅其他文章。正则表达式是用于描述/匹配一个文本集合的表达式:·所有英文字母、数字和很多可显示的字符本身就是正则表达式,用于匹配它们自己。比如“a”就是匹配字母“a”的正则表达式·一些特殊的字符在正则表达式中不在用来描述它自身,它们在正则表达式中已经被“转义”,这些字符称为“元字符”。perl类型的正则表达式中被转义的字符有:.

4、()[]{}^$*+?。被转义的字符已经有特殊的意义,如点号.表示任意字符;方括号表示选择方括号中的任意一个(如[a-z]表示任意一个小写字符);^放

5、在表达式开始出表示匹配文本开始位置,放在方括号内开始处表示非方括号内的任一字符;大括号表示前面的字符或表达式的重复次数;

6、表示可选项,即

7、前后的表达式任选一个。·如果要在正则表达式中表示元字符本身,比如我就要在文本中查找问号“?”,那么就要使用引用符号(或称换码符号),一般是反斜杠“”。需要注意的是,在R语言中得用两个反斜杠即“\”,如要匹配括号就要写成“\(\)”·不同语言或应用程序(事实上很多规则都通用)定义了一些特殊的元字符用于表示某类字符,如d表示数字0-9,D表示非数字,s表示空白字符(包括空格、制表

8、符、换行符等),S表示非空白字符,w表示字(字母和数字),W表示非字,<和>分别表示以空白字符开始和结束的文本。·正则表达式符号运算顺序:圆括号括起来的表达式最优先,然后是表示重复次数的操作(即:*+{}),接下来是连接运算(其实就是几个字符放在一起,如abc),最后是表示可选项的运算(

9、)。所以“foot

10、bar”可以匹配“foot”或者“bar”,但是“foot

11、ba{2}r”匹配的是“foot”或者“baar”。2 字符数统计和字符翻译2.1 nchar和lengthnchar这个函数简单,统计向量中每个元素

12、的字符个数,注意这个函数和length函数的差别:nchar是向量元素的字符个数,而length是向量长度(向量元素的个数)。其他没什么需要说的。x<- c("Hellow", "World", "!") nchar(x)##[1]651length("")##[1]1nchar("")##[1]02.2 tolower,toupper和chartr这三个函数用法也很简单:DNA<- "AtGCtttACC" tolower(DNA)##[1]"atgctttacc"toupper(DNA)##[1]"ATGCTTTACC"

13、chartr("Tt", "Uu",DNA)##[1]"AuGCuuuACC"chartr("Tt", "UU",DNA)##[1]"AUGCUUUACC"3 字符串连接3.1 paste函数paste应该是R中最常用字符串函数了,也是R字符串处理函数里面非常纯的不使用正则表达式的函数(因为用不着)。它相当于其他语言的strjoin,但是功能更强大。它把向量连成字串向量,其他类型的数据会转成向量,但不一定是你要的结果:paste("CK",1:6,sep= "")##[1]"CK1""CK2""CK3""CK4""CK5""

14、CK6"x<- list(a= "aaa",b= "bbb",c= "ccc")y<- list(d=1,e=2) paste(x,y,sep= "-")#较短的向量被循环使用##[1]"aaa-1""bbb-2""ccc-1"z<- list(x,y) paste("T",z,sep= 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。