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结尾的字串。
最新文章
- [LeetCode] Search Insert Position 搜索插入位置
- 【Windows编程】系列第四篇:使用Unicode编程
- java String 中用";+";拼接字符串的原理
- git 常用命令粗略总结
- 【C】二级指针探秘 &; 星号的两种用法(1.与基本类型结合形成另一种类型,比如与int结合形成int* 2.取值操作)
- [Js/Jquery]立即执行匿名函数
- HDU 4870 Rating(概率、期望、推公式) &;&; ZOJ 3415 Zhou Yu
- hdu 5446 Unknown Treasure Lucas定理+中国剩余定理
- AMQP
- Force.com微信开发系列(八)生成带参数的二维码
- 基础面试题——Javascript
- Android更新UI的两种方法——handler与runOnUiThread()
- VLV INDEX
- uva10954 - Add All(multiset功能)
- ecshop订单状态对应值详解
- PHP实现验证码图片
- How to make a simplest WCF service work on Win7 with VS2010
- Unity 3D游戏开发引擎:最火的插件推荐
- python3全栈开发-并发编程的多进程理论
- sql语句基础
热门文章
- LeetCode OJ:Convert Sorted Array to Binary Search Tree(将排序好的数组转换成二叉搜索树)
- 条款47:请使用traits class表示类型信息
- 【LeetCode】004. Median of Two Sorted Arrays
- NSString *const 和 const NSString * 的区别
- Jeesite开垦
- BZOJ3489:A simple rmq problem
- springCloud组件启动时,提示内部tomcat无法加载
- The Salt Master has rejected this minion's public key!
- Poj 1631 Bridging signals(二分+DP 解 LIS)
- 在CentOS上安装Java开发环境:使用yum安装jdk