Num <- c(310,456,311,431,421,435,534,312,313,320,321,322,323,314,324,317,3231)
ipn<-grep("^3",Num,value=T)##开头为3的数字##
ipn
[1] “310” “311” “312” “313” “320” “321” “322” “323” “314” “324” “317” “3231”
(2)“” 匹 配 一 个 字 符 串 的 结 尾 , 比 如 s u b ( " a ”匹配一个字符串的结尾,比如sub(“a”匹配一个字符串的结尾,比如sub(“a”,”",c(“abcd”,“dcba”))表示将以a结尾的字符串。
ipn<-grep(“4$”,Num,value=T)##以4结尾的的数字#
ipn
[1] “534” “314” “324”
(3)".“表示除了换行符以外的任一字符,比如sub(“a.c”,”",c(“abcd”,“sdacd”))。
ipn<-grep(“3.2”,Num,value=T)##所有以3开头,以2结尾的数字##
ipn
[1] “312” “322”
(4)“”表示将其前的字符进行0个或多个的匹配,比如sub(“ab”,"",c(“aabcd”,“dcaaaba”))。
ipn<-grep(“3*1”,Num,value=T)##所有开头为3或者末位为1的数字##
ipn
[1] “310” “311” “431” “421” “312” “313” “321” “314” “317” “3231”
(5)“?”匹配0或1个正好在它之前的那个字符.
ipn<-grep("?31",Num,value=T)##所有含‘31’的数字##
ipn
[1] “310” “311” “431” “312” “313” “314” “317” “3231”
(6)“+”匹配1或多个正好在它之前的那个字符。
ipn<-grep("+31",Num,value=T)##所有含‘31’的数字##
ipn
[1] “310” “311” “431” “312” “313” “314” “317” “3231”
(7)“.*”可以匹配任意字符,比如sub(“a.*e”,"",c(“abcde”,“edcba”))。
ipn<-grep(“3.*1”,Num,value=T)##所有含‘3’和’1’的数字##
ipn
[1] “310” “311” “431” “312” “313” “321” “314” “317” “3231”
(8)“|”表示逻辑的或,比如sub(“ab|ba”,"",c(“abcd”,“dcba”)),可以替换ab或者ba。
ipn<-grep(“3|1”,Num,value=T)##所有含‘3’或’1’的数字##
ipn
[1] “310” “311” “431” “421” “435” “534” “312” “313” “320” “321” “322” “323” “314”
[14] “324” “317” “3231”
(9)“”还可以表示逻辑的补集,需要写在“[]”中,比如sub("[ab]","",c(“abcd”,“dcba”)),由于sub只替换搜寻到的第一个,因此这个例子中用gsub效果更好。
ipn<-grep("[1]",Num,value=T)##所有含‘1’的数字##
ipn
[1] “310” “311” “431” “421” “312” “313” “321” “314” “317” “3231”
(10)“[]”还可以用来匹配多个字符,如果不使用任何分隔符号,则搜寻这个集合,比如在sub("[ab]","",c(“abcd”,“dcba”))中,和"a|b"效果一样。
(11)“[-]”的形式可以匹配一个范围,比如sub("[a-c]","",c(“abcde”,“edcba”))匹配从a到c的字符,sub("[1-9]","",c(“ab001”,“001ab”))匹配从1到9的数字。
最后需要提一下的是“贪婪”和“懒惰”的匹配规则。默认情况下是匹配尽可能多的字符,是为贪婪匹配,比如sub(“a.b","",c(“aabab”,“eabbe”)),默认匹配最长的a开头b结尾的字串,也就是整个字符串。如果要进行懒惰匹配,也就是匹配最短的字串,只需要在后面加个“?”,比如sub(“a.?b”,”",c(“aabab”,“eabbe”)),就会匹配最开始找到的最短的a开头b结尾的字串。