R: 正则表达式
正则表达式:
例:sub("a","",c("abcd","dcba")); [1] "bcd" "dcb",将向量中的两个字符串中的a都去掉了。
“^” 匹配一个字符串的开始,
sub("^a","",c("abcd","dcba")); [1] "bcd" "dcba" ,表示将开头为 a 的字符串中的 a 替换成空,在返回值中可以发现后面出现的a并没有被替换。
sub("^ab","",c("abcd","dcba")); [1] "cd" "dcba" , 如果要将开头的一个字符串替换,简单地写成“^ab”就行。
“^”还可以表示逻辑的补集,需要写在“[]”中,
sub("[^ab]","",c("abcd","dcba"));[1] "abd" "cba" ,由于sub只替换搜寻到的第一个,因此这个例子中用gsub效果更好
gsub("[^ab]","",c("abcd","dcba")); [1] "ab" "ba"
“[]” 还可以用来匹配多个字符,如果不使用任何分隔符号,则搜寻这个集合; “[-]”的形式可以匹配一个范围,
sub("[ab]","",c("abcd","dcba")); [1] "bcd" "dca" 中,和"a|b"效果一样。
sub("[a-c]","",c("abcde","edcba")); [1] "bcde" "edba" 匹配从 a 到 c 的字符,
sub("[1-9]","",c("ab001","001ab")); [1] "ab00" "00ab" 匹配从1到9的数字。
“$” 匹配一个字符串的结尾,
sub("a$","",c("abcd","dcba")); [1] "abcd" "dcb" ,表示将以 a 结尾的字符串中的 a 替换成空。
"." 表示除了换行符以外的任意一个字符,
sub("a.c","",c("abcd","sdacd")); [1] "d" "sdacd"
“*” 表示将其前的字符进行0个或多个的匹配,
sub("a*b","",c("aabcd","dcaaaba")); [1] "cd" "dca"。类似地,
“?” 匹配 0 或 1 个正好在它之前的那个字符
“+” 匹配1或多个正好在它之前的那个字符
“.*” 可以匹配任意字符
sub("a.*e","",c("abcde","edcba")); [1] "" "edcba"
“|” 表示逻辑的或
sub("ab|ba","",c("abcd","dcba")); [1] "cd" "dc",可以替换ab或者ba。。
以上是最基础的正则表达式元字符,在一些正则表达式的书籍和资料中有非常详细的介绍。
最后需要提一下的是“贪婪”和“懒惰”的匹配规则。
默认情况下是匹配尽可能多的字符,是为贪婪匹配,比如 sub("a.*b","",c("aabab","eabbe")); [1] "" "ee",默认匹配最长的a开头b结尾的字串,也就是整个字符串。
如果要进行懒惰匹配,也就是匹配最短的字串,只需要在后面加个“?”,比如 sub("a.*?b","",c("aabab","eabbe")); [1] "ab" "ebe" ,就会匹配最开始找到的最短的a开头b结尾的字串。
R: 正则表达式的更多相关文章
- R正则表达式的问题
今天在处理R的正则表达式的时候发现,R的正则式中的转义字符和linux.python等的还不一样. Linux是使用"\",而R中则使用"[]"! # 我想要将 ...
- 正则表达式,字符串中需要两个反斜杠“\\d”
这个正则表达式为什么会有两个反斜杠? "^.*?\\.(jpg|png|bmp|gif)$"上面这个正则表达式为什么有两个反斜杠呢?反斜杠点\.就能表示点.了,为什么还要在\.前面 ...
- r正则表达式
/t 制表符. /n 新行. . 匹配任意字符. | 匹配表达式左边和右边的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc". ...
- Coursera-Getting and Cleaning Data-week4-R语言中的正则表达式以及文本处理
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html Thursday, January 29, 2015 补上第四周笔记,以及本次课程总结. 第四周 ...
- C语言正则表达式详解 regcomp() regexec() regfree()详解
标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库 ...
- Python正则表达式学习摘要及资料
摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...
- Python3 正则表达式
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦, ...
- Python正则表达式学习
1.Python的正则表达式需要用到re模块,有两个方法:match和search,match从第一个字符串开始匹配,search从任意字符串开始匹配,所以match比search严格. 如果匹配成功 ...
- Day6 反射、模块、正则表达式和算法
递归完成阶乘 def func(num): if num == 1: return 1 return num * func(num - 1) x = func(7) print(x) 反射 commo ...
- grep和正则表达式
正则表达式示例表字 符 意 义 示 例* 任意长度的字符串. a* 表示: 空字符串.aaaa.a…? 长度为0或者1的字符串. a? 表示: 空字符串和a.+ 长度为一个或者多个的字符串. a+表示 ...
随机推荐
- 二叉排序树的应用(java)
package com.tree.find; public class TestSearchBST { private static class BiNode{ int data; BiNode lc ...
- 【整理】C++中的unique函数
之前总结了一下我觉得有用的erase,lower_bound,upper_bound. 现在总结一下unique,unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复 ...
- 【转】JVM可视化工具插件---Visual GC
Visual GC是一个Java 内存使用分析与GC收集的可视化工具插件 <插件下载> 一:整个区域分为三部分:spaces.graphs.histogram 1 spaces区域:代表虚 ...
- docker 镜像自动升级脚本
#!/bin/bash # Let's finish it like a flash ARGS=`getopt -o v:"$@"` echo $# if [ $# != 2 ]; ...
- [转载]centos下yum安装samba及配置
centos下yum安装samba及配置 在我们使用 Windows 作为客户机的时候,通常有文件.打印共享的需求.作为Windows 网络功能之一,通常可以在 Windows 客户机之间通过Wind ...
- ORACLE增加用户
create user 账号 identified by "密码"; grant connect to 账号; grant resource to 账号; --把dba 权限给in ...
- CountDownLatch的介绍和使用
1.类介绍 java.util.concurrent 类 CountDownLatch java.lang.Object java.util.concurrent.CountDownLatch 一个同 ...
- pycharm中 unittests in xxxx 运行模式
pycham中 当你运行时 ,使用的 是 Run "unittests in xxxx" 模式时候,if __name__ == '__main__': 后面的代码是不执行的 ...
- java 字符串和集合互相转换
今天在写项目的时候遇到一个问题,就是要把得到的一个集合转换成字符串,发现 import org.apache.commons.lang.StringUtils; 有这么一个简单的方法:String s ...
- oracle 密码默认180天过期
alter profile default limit password_life_time unlimited; alter user username identified by 'pwd';