正则表达式:

例: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结尾的字串。

最新文章

  1. [LeetCode] Search Insert Position 搜索插入位置
  2. 【Windows编程】系列第四篇:使用Unicode编程
  3. java String 中用"+"拼接字符串的原理
  4. git 常用命令粗略总结
  5. 【C】二级指针探秘 & 星号的两种用法(1.与基本类型结合形成另一种类型,比如与int结合形成int* 2.取值操作)
  6. [Js/Jquery]立即执行匿名函数
  7. HDU 4870 Rating(概率、期望、推公式) && ZOJ 3415 Zhou Yu
  8. hdu 5446 Unknown Treasure Lucas定理+中国剩余定理
  9. AMQP
  10. Force.com微信开发系列(八)生成带参数的二维码
  11. 基础面试题——Javascript
  12. Android更新UI的两种方法——handler与runOnUiThread()
  13. VLV INDEX
  14. uva10954 - Add All(multiset功能)
  15. ecshop订单状态对应值详解
  16. PHP实现验证码图片
  17. How to make a simplest WCF service work on Win7 with VS2010
  18. Unity 3D游戏开发引擎:最火的插件推荐
  19. python3全栈开发-并发编程的多进程理论
  20. sql语句基础

热门文章

  1. LeetCode OJ:Convert Sorted Array to Binary Search Tree(将排序好的数组转换成二叉搜索树)
  2. 条款47:请使用traits class表示类型信息
  3. 【LeetCode】004. Median of Two Sorted Arrays
  4. NSString *const 和 const NSString * 的区别
  5. Jeesite开垦
  6. BZOJ3489:A simple rmq problem
  7. springCloud组件启动时,提示内部tomcat无法加载
  8. The Salt Master has rejected this minion's public key!
  9. Poj 1631 Bridging signals(二分+DP 解 LIS)
  10. 在CentOS上安装Java开发环境:使用yum安装jdk