R 函數(shù)筆記 | grep()函數(shù)與R語言中的正則表達(dá)式

grep()能對(duì)向量中特定條件的元素進(jìn)行查詢,默認(rèn)return為index。grep()語法與grep()大致相似,但默認(rèn)return為logical。

grep()

代碼如下:

grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE,
     fixed = FALSE, useBytes = FALSE, invert = FALSE)

grep()函數(shù)參數(shù):

參數(shù) 功能
pattern 包含正則表達(dá)式的字符串
x 尋找匹配的字符向量,或者可以通過字符向量強(qiáng)制轉(zhuǎn)換的對(duì)象。支持長(zhǎng)向量
ignore.case 如果為FALSE,則模式匹配區(qū)分大小寫;如果為TRUE,則在匹配期間忽略大小寫
perl 如果為TRUE,使用perl匹配的正則表達(dá)式
value 如果為FALSE,則返回包含由grep確定的匹配的索引的向量,如果為TRUE,則返回包含匹配元素本身的向量
fixed 如果為TRUE,則pattern是要按原樣匹配的字符串
useBytes 如果為TRUE,則匹配是逐字節(jié)而不是逐字符完成的
invert 如果為TRUE,則返回不匹配的元素的索引或值

R 語言中的正則表達(dá)式

正則表達(dá)式符號(hào) 含義
^ 匹配一個(gè)字符串的開始
$ 匹配一個(gè)字符串的結(jié)尾
. 匹配除了換行符以外的任一字符
* 匹配所有含有*后的字符
? 匹配所有含有?后的字符
+ 匹配所有含有+后的字符
.* 可以匹配任意字符
| 表示邏輯的或
[^] 表示邏輯的補(bǔ)集
[] 匹配多個(gè)字符,如果不使用任何分隔符號(hào),則搜尋這個(gè)集合
[-] 匹配一個(gè)范圍
貪婪和懶惰規(guī)則

默認(rèn)情況下是匹配盡可能多的字符,是為貪婪匹配,比如sub("a.b","",c("aabab","eabbe")),默認(rèn)匹配最長(zhǎng)的a開頭b結(jié)尾的字串,也就是整個(gè)字符串。如果要進(jìn)行懶惰匹配,也就是匹配最短的字串,只需要在后面加個(gè)“?”,比如sub("a.?b","",c("aabab","eabbe")),就會(huì)匹配最開始找到的最短的a開頭b結(jié)尾的字串。

grep()函數(shù)實(shí)例:

1. ^ 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
             'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
             'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
             'GLS','GLS2','NADSYN1')
Results <- grep('^C', Protein, value = T)
Results
^ 的使用
2. $ 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
             'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
             'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
             'GLS','GLS2','NADSYN1')
Results <- grep('2$', Protein, value = T)
Results
$ 的使用
3. . 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
            'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
            'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
            'GLS','GLS2','NADSYN1')
Results <- grep('MCM.', Protein, value = T)
Results
. 的使用
4. * 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
             'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
             'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
             'GLS','GLS2','NADSYN1','DDB1','DDB2','DAO',
             'DDO','DCLRE1C','DLC1')
Results <- grep('*2', Protein, value = T)
Results
* 的使用
5. ? 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
             'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
             'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
             'GLS','GLS2','NADSYN1','DDB1','DDB2','DAO',
             'DDO','DCLRE1C','DLC1','USP11')
Results <- grep('?D', Protein, value = T)
Results
? 的使用
6. + 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
             'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
             'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
             'GLS','GLS2','NADSYN1','DDB1','DDB2','DAO',
             'DDO','DCLRE1C','DLC1','USP11')
Results <- grep('+D', Protein, value = T)
Results
+ 的使用
7. .* 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
             'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
             'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
             'GLS','GLS2','NADSYN1','DDB1','DDB2','DAO',
             'DDO','DCLRE1C','DLC1','USP11')
Results <- grep('T.*3', Protein, value = T)
Results
.* 的使用
8. | 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
             'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
             'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
             'GLS','GLS2','NADSYN1','DDB1','DDB2','DAO',
             'DDO','DCLRE1C','DLC1','USP11')
Results <- grep('^T|*3', Protein, value = T)
Results
| 的使用
9. [^] 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
             'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
             'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
             'GLS','GLS2','NADSYN1','DDB1','DDB2','DAO',
             'DDO','DCLRE1C','DLC1','USP11')
Results <- grep('[^TP53]', Protein, value = T)
Results
[^] 的使用
10. [] 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
             'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
             'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
             'GLS','GLS2','NADSYN1','DDB1','DDB2','DAO',
             'DDO','DCLRE1C','DLC1','USP11')
Results <- grep('[4,3,9,6]', Protein, value = T)
Results
[] 的使用
11. [-] 的使用:
Protein <- c('TP53','GMPS','CAD','MCM2','MCM3','MCM4',
             'MCM5','MCM6','MCM7','TGM1','TGM2','TGM3',
             'TGM4','TGM5','TGM6','TGM7','CTPS1','CTPS2',
             'GLS','GLS2','NADSYN1','DDB1','DDB2','DAO',
             'DDO','DCLRE1C','DLC1','USP11')
Results <- grep('[1-3]', Protein, value = T)
Results
[-] 的使用

參考資料:

  1. R語言之grep函數(shù)和正則通配符查詢
  2. R語言_符串處理和grep的用法
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Python中的正則表達(dá)式(re) import rere.match #從開始位置開始匹配,如果開頭沒有則無re...
    BigJeffWang閱讀 7,559評(píng)論 0 99
  • `>本文是 Jan Goyvaerts 為 RegexBuddy 寫的教程的譯文,版權(quán)歸原作者所有 在本文中講述了...
    極客圈閱讀 2,202評(píng)論 0 5
  • #首先,python中的正則表達(dá)式大致分為以下幾部分: 元字符 模式 函數(shù) re 內(nèi)置對(duì)象用法 分組用法 環(huán)視用法...
    mapuboy閱讀 1,704評(píng)論 0 51
  • 五一小長(zhǎng)假,一家子去東興海邊看海,吹海風(fēng)。本來想跳入大海的懷抱享受海浪的親吻,只因天氣太涼,不敢冒然下水。 海邊風(fēng)...
    秋風(fēng)細(xì)雨1閱讀 1,719評(píng)論 0 3
  • 送成去上課,我順路看成奶奶。牛奶和大南瓜相伴,兩朵玫瑰花。進(jìn)門在輪椅坐著,在我叫娘后開口第一句是吃飯了嗎?還有水餃...
    毛老師工作室閱讀 139評(píng)論 0 1

友情鏈接更多精彩內(nèi)容