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. CentOS 7 安装Rabbitmq

    第一步也是往往最重要的一步:下载安装包! Rabbitmq地址:https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.5 Erla ...

  2. Lua操作mysql

    require "luasql.mysql" --创建环境对象 env = luasql.mysql() --连接数据库 conn = env:connect("数据库名 ...

  3. 相同数据源情况下,使用Kafka实时消费数据 vs 离线环境下全部落表后处理数据,结果存在差异

    原因分析: 当某个consumer宕机时,消费位点(例如2s提交一次)尚未提交到zookeeper,此时Kafka集群自动rebalance后另一consumer来接替该宕机consumer继续消费, ...

  4. codeforces 17C Balance(动态规划)

    codeforces 17C Balance 题意 给定一个串,字符集{'a', 'b', 'c'},操作是:选定相邻的两个字符,把其中一个变成另一个.可以做0次或者多次,问最后可以生成多少种,使得任 ...

  5. Java集合框架中的快速失败(fail—fast)机制

      fail-fast机制,即快速失败机制,是java集合框架中的一种错误检测机制.多线程下用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加.删除),则会抛出Concurre ...

  6. psql: FATAL: role “postgres” does not exist

    I'm a postgres novice. I installed the postgres.app for mac. I was playing around with the psql comm ...

  7. [HEOI2012]朋友圈

    题目 我们发现我们要求的是一个最大团问题,众所周知这是一个\(NP\)难问题,除了爆搜没有什么别的方法,但是这道题我们可以根据图的特殊性质入手 我们如果把\(B\)国的人分成奇数和偶数两类,就会发现奇 ...

  8. web-ctf随机数安全

    rand() 函数在产生随机数的时候没有调用 srand(),则产生的随机数是有规律可询的. 产生的随机数可以用下面这个公式预测 : state[i] = state[i-3] + state[i-3 ...

  9. controller中的路径明明书写正确,浏览器中访问的url也拼接正确,但报404

    Bug:controller中的路径明明书写正确,浏览器中访问的url也拼接正确,但报404 原因一:由于路由地址对应的处理方法存在同名而造成的,此时应该检查controller的方法们,看看有没有同 ...

  10. Odoo中的模型在哪里

    Odoo 模型存在 Python 的模块之外, 在中间注册表那里. 对于这个注册表,可以通过self.env[<model name>]进入,例如, 通过res.partner 模型获取对 ...