例:sub("a","",c("abcd","dcba")); [1] "bcd" "dcb",將向量中的兩個字符串中的a都去掉了。正則表達式
「^」 匹配一個字符串的開始,spa
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效果更好margin
gsub("[^ab]","",c("abcd","dcba")); [1] "ab" "ba"db
「[]」 還能夠用來匹配多個字符,若是不使用任何分隔符號,則搜尋這個集合; 「[-]」的形式能夠匹配一個範圍,集合
sub("[ab]","",c("abcd","dcba")); [1] "bcd" "dca" 中,和"a|b"效果同樣。dba
sub("[a-c]","",c("abcde","edcba")); [1] "bcde" "edba" 匹配從 a 到 c 的字符,co
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結尾的字串。