R: 正則表達式

 

正則表達式:

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

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息