R语言的正则表达式主要用来处理文本资料,比如进行查找、替换等等。

首先是一些处理文本时会用到的函数:

字符串分割:strsplit()

字符串连接:paste(),paste0()

计算字符串长度:nchar(),length()

字符串截取:substr(),substring()

查看是否存在某个字符:grep(p,x) <返回匹配到的元素的下标(位置),p是一个正则表达式

       grepl(p,x)<返回逻辑值false or true

举个栗子:

s<-c("123abc\\456","abc123edf")
grep("",s) #匹配“"的位置,返回元素的下标
grepl("xcd",s)#”“是否匹配成功,返回逻辑值
> grep("",s)
[]
> grepl("xcd",s)
[] FALSE FALSE

字符替换:sub(p,replace,x) <对查找到的第一个字符进行替换

     gsub(p,replace,x) <对查找到的所有内容进行替换

eg:

s1<-c("123edf123")
sub("","sss",s1) #替换s1里""为“sss",注意:找到即停止
gsub("","sss",s1) #对找到的所有内容进行替换
> sub("","sss",s1)
[] "sssedf123"
> gsub("","sss",s1)
[] "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) #是否匹配到“”或“ab"

8、^

grepl("^a",s3) #是否以a开头

9、$

grepl("6$",s3) #是否以6结尾

10、()

grepl("abc(.+)456",s3)  #"abc"和""之间是否存在任意(.)大于等于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的更多相关文章

  1. R语言︱文本(字符串)处理与正则表达式

    处理文本是每一种计算机语言都应该具备的功能,但不是每一种语言都侧重于处理文本.R语言是统计的语言,处理文本不是它的强项,perl语言这方面的功能比R不知要强多少倍.幸运的是R语言的可扩展能力很强,DN ...

  2. R语言:文本(字符串)处理与正则表达式

    R语言:文本(字符串)处理与正则表达式 (2014-03-27 16:40:44) 转载▼ 标签: 教育 分类: R 处理文本是每一种计算机语言都应该具备的功能,但不是每一种语言都侧重于处理文本.R语 ...

  3. R语言中的正则表达式(转载:http://blog.csdn.net/duqi_yc/article/details/9817243)

    转载:http://blog.csdn.net/duqi_yc/article/details/9817243 目录 Table of Contents 1 正则表达式简介 2 字符数统计和字符翻译 ...

  4. R语言爬虫初尝试-基于RVEST包学习

    注意:这文章是2月份写的,拉勾网早改版了,代码已经失效了,大家意思意思就好,主要看代码的使用方法吧.. 最近一直在用且有维护的另一个爬虫是KINDLE 特价书爬虫,blog地址见此: http://w ...

  5. R语言-用R眼看琅琊榜小说的正确姿势

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html 目录: 零:写在前面的一些废话 一.R眼看琅琊榜的基本原理 1.导入数据 2.筛选数据 3.多条 ...

  6. R语言:用简单的文本处理方法优化我们的读书体验

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html 前言 延续之前的用R语言读琅琊榜小说,继续讲一下利用R语言做一些简单的文本处理.分词的事情.其实 ...

  7. R语言实战(二)数据管理

    本文对应<R语言实战>第4章:基本数据管理:第5章:高级数据管理 创建新变量 #建议采用transform()函数 mydata <- transform(mydata, sumx ...

  8. R语言学习笔记:字符串处理

    想在R语言中生成一个图形文件的文件名,前缀是fitbit,后面跟上月份,再加上".jpg",先不百度,试了试其它语言的类似语法,没一个可行的: C#中:"fitbit&q ...

  9. 笔记整理——Linux下C语言正则表达式

    Linux下C语言正则表达式使用详解 - Google Chrome (2013/5/2 16:40:37) Linux下C语言正则表达式使用详解 2012年6月6日Neal627 views发表评论 ...

随机推荐

  1. Java Web项目部署

    打包 使用Eclipse打包JAVA Web项目 如下 在项目上单击右键选择Export-选择JavaEE文件夹-选择WAR file(MyEclipse),单击Next>如图所示,选择存放打包 ...

  2. java String 常用方法集合

    String a = "abc";String b = "abc";a==b ;//返回true,因为a,b指向的是同一个地址 String a = new S ...

  3. angularJs的指令系统和双向数据绑定

    一.langularJs的指令系统 <!DOCTYPE HTML> <html ng-app><!--这种以ng开头的就是指令系统,初始化的一个指令,不仅可以加在html ...

  4. 【金融123】CNY和CNH的差异和关联

    https://www.sohu.com/a/117406459_473263 离岸人民币(CNH)与在岸人民币(CNY) 差异:   CNY CNH 法律监管限制 在岸人民币受大陆市场的管制,外汇和 ...

  5. spring boot +druid数据库连接池配置

    1.启动应用入口修改 增加servlet注解 import javax.sql.DataSource; import org.apache.ibatis.session.SqlSessionFacto ...

  6. iOS的AssetsLibrary框架访问所有相片

    该框架下有几个类,ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation. ALAssetsLibrary ...

  7. Reading SBAR SDN flow-Based monitoring and Application Recognition

    概要 在sdn下,控制平面基于网络测量的的数据控制网络,而细粒度的管理得益于细粒度的测量数据.针对sdn环境下的细粒度测量(识别具体应用程序),可以实现对细粒度的流量管控. 设计了识别系统SBAR,对 ...

  8. FD.io社区中国行暨未来网络技术沙龙·南京站 会议小结

    What is FD.io VPP? FD.io VPP(Fast Data Input/Output Vector Packet Processing)is a new network multi- ...

  9. 我的QT5学习之路(三)——模板库、工具类和控件(下)

    一.前言 作为第三篇的最后一部分,我们来看一下Qt的控件,谈到控件,就会让人想到界面的美观性和易操作性,进而想到开发的便捷性.作为windows界面开发的MFC曾经是盛行了多少年,但是其弊端也随着其他 ...

  10. java中的序列化问题

    序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,将数据分解成字节流,以便存储在文件中或在网络上传输.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间.序列化是 ...