1. 程式人生 > >R語言之grep函式和正則萬用字元查詢 [

R語言之grep函式和正則萬用字元查詢 [

在R語言的道路上又學到了一個新知識,記下來一起分享!

首先,grep函式可以像資料庫查詢一樣對向量中的具有特定條件的元素進行查詢!

其次,介紹幾種R語言中的正則萬用字元:

(1)“^”匹配一個字串的開始,比如sub("^a","",c("abcd","dcba")),表示將開頭為a的字串。如果要將開頭的一個字串替換,簡單地寫成“^ab”就行。

(2)“$”匹配一個字串的結尾,比如sub("a$","",c("abcd","dcba"))表示將以a結尾的字串。

(3)"."表示除了換行符以外的任一字元,比如sub("a.c","",c("abcd","sdacd"))。

(4)“*”表示將其前的字元進行0個或多個的匹配,比如sub("a*b","",c("aabcd","dcaaaba"))。

(5)“?”匹配0或1個正好在它之前的那個字元

(6)“+”匹配1或多個正好在它之前的那個字元。

(7)“.*”可以匹配任意字元,比如sub("a.*e","",c("abcde","edcba"))。

(8)“|”表示邏輯的或,比如sub("ab|ba","",c("abcd","dcba")),可以替換ab或者ba。

(9)“^”還可以表示邏輯的補集,需要寫在“[]”中,比如sub("[^ab]","",c("abcd","dcba")),由於sub只替換搜尋到的第一個,因此這個例子中用gsub效果更好。

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

​最後,舉例說明:

例:

> 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" 

[10] "324"  "317"  "3231"

> ipn<-grep("^31",Num,value=T)##開頭為31的數字#

> ipn

[1] "310" "311" "312" "313" "314" "317"

> ipn<-grep("4$",Num,value=T)##以4結尾的的數字#

> ipn

[1] "534" "314" "324"

> ipn<-grep("3.2",Num,value=T)##所有以3開頭,以2結尾的數字##

> ipn

[1] "312" "322"

> ipn<-grep("*31",Num,value=T)##所有含‘31’的數字#

> ipn

[1] "310"  "311"  "431"  "312"  "313"  "314"  "317"  "3231"

> ipn<-grep("3*1",Num,value=T)##所有開頭為3或者末位為1的數字##

> ipn

[1] "310"  "311"  "431"  "421"  "312"  "313"  "321"  "314"  "317" 

[10] "3231"

> ipn<-grep("?31",Num,value=T)##所有含‘31’的數字##

> ipn

[1] "310"  "311"  "431"  "312"  "313"  "314"  "317"  "3231"

> ipn<-grep("+31",Num,value=T)##所有含‘31’的數字##

> ipn

[1] "310"  "311"  "431"  "312"  "313"  "314"  "317"  "3231"

> ipn<-grep("3.*1",Num,value=T)##所有含‘3'和'1’的數字##

> ipn

[1] "310"  "311"  "431"  "312"  "313"  "321"  "314"  "317"  "3231"

> ipn<-grep("3|1",Num,value=T)##所有含‘3'或'1’的數字##

> ipn

[1] "310"  "311"  "431"  "421"  "435"  "534"  "312"  "313"  "320" 

[10] "321"  "322"  "323"  "314"  "324"  "317"  "3231"

> ipn<-grep("[1]",Num,value=T)##所有含‘1’的數字##

> ipn

[1] "310"  "311"  "431"  "421"  "312"  "313"  "321"  "314"  "317" 

[10] "3231"

R語言之grep函式和正則萬用字元查詢
http://blog.sina.com.cn/s/blog_12e5ac8720102vx88.html

R中的普通文字處理-彙總 http://rstudio-pubs-static.s3.am ... b4fbd2ea5ea162.html


相關推薦

R語言grep函式字元查詢 [

在R語言的道路上又學到了一個新知識,記下來一起分享! 首先,grep函式可以像資料庫查詢一樣對向量中的具有特定條件的元素進行查詢! 其次,介紹幾種R語言中的正則萬用字元: (1)“^”匹配一個字串的開始,比如sub("^a","",c("abcd","dcba")),表示將開頭為a的字串。如果要將開頭的一個

R語言grep函式字元查詢

在R語言的道路上又學到了一個新知識,記下來一起分享! 首先,grep函式可以像資料庫查詢一樣對向量中的具有特定條件的元素進行查詢! 其次,介紹幾種R語言中的正則萬用字元: (1)“^”匹配一個字串的開始,比如sub("^a","",c("abcd","dcba")),表

L1與L2損失函式化的區別

  在機器學習實踐中,你也許需要在神祕的L1和L2中做出選擇。通常的兩個決策為:1) L1範數 vs L2範數 的損失函式; 2) L1正則化 vs L2正則化。 作為損失函式   L1範數損失函式,也被稱為最小絕對值偏差(LAD),最小絕對值誤差(LAE)。總的說來,它是把目標值(\(Y_{i}\))與估

String字串的replace函式表示式

package zhengze; public class sss { public static void main(String[] args) { // TODO Auto-generated method stub          String str="

R語言決策樹隨機森林

總結決策樹之前先總結一下特徵的生成和選擇,因為決策樹就是一種內嵌型的特徵選擇過程,它的特徵選擇和演算法是融合在一起的,不需要額外的特徵選擇。 一、特徵生成: 特徵生成是指在收集資料之時原始資料就具有的資料特徵,這些資料特徵由收集的資料決定(其實也就是在產品定型時設定的需要收

C語言指標函式函式指標

1.指標函式:本質是一個函式。函式返回型別是某一型別的指標       格式:型別識別符號  * 函式名(引數表)       int *f(int x, int y);int *fun(); int *p; p = fun();      當一個函式宣告其返回值為一個指標時

JavaScript筆記表單表示式

       正則表示式是一種對文字字串進行驗證和格式化的極其強大的方式。通過使用正則表示式,可以用一兩行JavaScript程式碼完成原本需要幾十行程式碼的複雜任務。        正則表示式是一種特殊符號編寫的模式,描述一個或多個文字字串,常常被認為是程式設計中最棘手的

R語言矩陣操作運算

1.轉置運算     對於矩陣A,函式t(A)表示矩陣A的轉置,如: > A=matrix(1:6,nrow=2); > A;      [,1] [,2] [,3] [1,]    1

R語言畫圖函式引數

R的許多函式都有類似的引數名,這些函式往往有同樣的功能。因此後面就只介紹比較特殊的引數。 layout():mat用矩陣設定視窗的劃分,矩陣的0元素表示該位置不畫圖,非0元素必須包括從1開始的連續的整數值,比如:1……N,按非0元素的大小設定圖形的順序。widths用來設定視窗不同列的寬度,heights設定

L1L2:損失函式

作為損失函式 L1範數損失函式   L1範數損失函式,也被稱之為最小絕對值誤差。總的來說,它把目標值$Y_i$與估計值$f(x_i)$的絕對差值的總和最小化。 $$S=\sum_{i=1}^n|Y_i-f(x_i)|$$ L2範數損失函式   L2範數損失函式,也被稱為最小平方誤差,總的來說,它把目

Linux學習Shell基礎——Bash基本功能——字元其他特殊符號

1、萬用字元 萬用字元 作用 ? 匹配一個任意字元 * 匹配0個或任意多個任意字元,也就是可以匹配任何內容 [ ] 匹配中括號中任意一個字元。例如:[

java 泛型中 T 問號(字元)的區別

型別本來有:簡單型別和複雜型別,引入泛型後把複雜型別分的更細了; 現在List<Object>, List<String>是兩種不同的型別;且無繼承關係; 泛型的好處如: 開始版本 public void write(Integer

Java泛型--上界字元下界字元

轉自:Java泛型中extends和super的區別? 另,問題來源:Java 泛型 <? super T> 中 super 怎麼 理解?與 extends 有何不同?   <? extends T>和<? super T>是Java泛型中的

Java泛型中T問號(字元)的區別

型別本來有:簡單型別和複雜型別,引入泛型後把複雜型別分的更細了. 概述 泛型是Java SE 1.5的新特性,泛型的本質是引數化型別,也就是說所操作的資料型別被指定為一個引數。這種引數型別可以用在類、介面和方法的建立中,分別稱為泛型類、泛型介面、泛型方法。 Java語

shell介紹,命令歷史,命令補全別名,字元,輸入輸出重定向,管道符作業控制

shell介紹 可以使用 yum list |grep zsh 或者 yum list |grep ksh 這樣可以搜尋 zs

C語言regcomp、regexec、regfreeregerror函式實現表示式校驗

  前言    首先,祝大家國慶假期玩的嗨皮!可能有的人已經在回家的路上了,是不是都看不到我的真摯祝福了?    C語言對於一些東西的封裝比較少,比如正則表示式,但速度快一直使它立於不敗之地,今天就要介紹如何用C封裝。    一、正則表示式      1、介紹     應該都聽過正則吧?主要應用在字

grep表達式參數

http 換行符 spa images 特殊字符 成功 tro 數字 ont 一:grep參數 1,-n :顯示行號 2,-o :只顯示匹配的內容 3,-q :靜默模式,沒有任何輸出,得用$?來判斷執行成功沒有,即有沒有過濾到想要的內容 4,-l :如果匹配成功

grep表達式

linu 表達 正則 多個 erp 技術分享 文件 所有 [0 ---恢復內容開始--- 正則表達式:用一些具有特殊含義的符號組合到一起來描述字符或者字符串的方法 linux中,通配符是由shell解釋的,而正則表達式則是由命令解釋的:如grep egrep是擴展的gr

python全棧開發從入門到放棄常用模塊

imp 管理 gin idt 由於 說明 多次 mar style 什麽是模塊? 常見的場景:一個模塊就是一個包含了python定義和聲明的文件,文件名就是模塊名字加上.py的後綴。 但其實import加載的模塊分為四個通用類別:    1 使用python編寫

python常用模塊表達式

正則 logs 劃線 python log 則表達式 換行 表達 重復 今天我們來談談python中模塊的使用,在探討模塊前先來了解一下正則表達式的具體用法。 1.正則表達式 正則表達式就是匹配 字符串內容的一種規則。談到正則就和字符串相關了,首先我們要知道什麽是字符組。