zoukankan      html  css  js  c++  java
  • 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结尾的字串。

  • 相关阅读:
    面向对象设计原则
    面向对象设计流程
    mysql远程连接命令(转)
    如何使用matplotlib绘制一个函数的图像
    svn:ignore eclipse开发一般忽略文件
    zookeeper client 常用操作
    pip使用
    vi常用快捷键
    python常用函数
    RabbitMQ 学习记录
  • 原文地址:https://www.cnblogs.com/li-20151130/p/9119251.html
Copyright © 2011-2022 走看看