R gsub 函式引發的正規表示式的歸納

2021-09-18 00:07:55 字數 2769 閱讀 4097

在解決titanic生存**的時候,需要從名字一列中提取出title時,使用了gsub()函式,但是看到了這行**的時候,心裡時罵娘的,各種代號根本看不懂其意義,所以這篇文章來詮釋下什麼是正規表示式。

我們日常生活中接觸到的大部分資料都是以文字的形式存在。文字分析與挖掘在業界中也有著非常廣泛的應用。

由於文字資料大多屬於非結構化的資料,要想對文字資料進行傳統的統計模型分析,必須要經過層層的資料清洗與整理。

正規表示式和r中gsub()函式就是用來幹這些字串處理的。

大部分的字母和所有的數字都是匹配他們自身的正規表示式。比如:a就是a,1就是1,沒有特殊的含義。然而,在正規表示式的語法規定中,有12個字元被保留用作特殊用途。他們分別是:

如果我們直接進行對這些特殊字元進行匹配,是不能匹配成功的。正確理解他們的作用與用法,至關重要。

# [ ]:括號內的任意字元將被匹配;

在r裡做個實驗

結果是:

# \ :具有兩個作用:

1.對元字元進行轉義(後續會有介紹)

2.一些以\開頭的特殊序列表達了一些字串組

\f 換頁符

\n 換行符

\r 回車符

\t 製表符(tab)

\v 垂直製表符

\d 匹配數字與非數字任何乙個數字字元,等價於[0-9]

\w 匹配字母\非字母與數字任何乙個字母數字字元(大小寫均可以)或下劃線字元(等價於[a-za-z0-9])

\s 任何乙個空白字元(等價於[\f\n\r\t\v])

# ^:匹配字串的開始,置於character class的首位表達的意思是取反義。如[^5]表示匹配除了」5」以外的任何字元。再r裡做個實驗:

結果是:

$ :匹配字串的結束,放在句尾,表示一行字串的結束。但將它置於character class內則消除了它的特殊含義,如[akm$ ]將匹配』a』,』k』,』m』或者』$』。

. :匹配除換行符以外的任意字元。

?:前面的字元(組)是可有可無的,並且最多被匹配一次

*:前面的字元(組)將被匹配零次或多次

+:前面的字元(組)將被匹配一次或多次

( ):表示乙個字元組,括號內的字串將作為乙個整體被匹配。

| : 表示可選項,即|前後的表示式任選乙個

{} : 前面的字元或表示式的重複次數。如表示重複的次數不能小於5,不能多於12,否則都不匹配

例如:

runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 號代表前面的字元必須至少出現一次(1次或多次)。

runoob,可以匹配 runob、runoob、runoooooob 等, 號代表字元可以不出現,也可以出現一次或者多次(0次、或1次、或多次)。

colou?r 可以匹配 color 或者 colour,? 問號代表前面的字元最多隻可以出現一次(0次、或1次)。

如果我們想查詢元字元本身,如」?」和」「,我們需要提前告訴編譯系統,取消這些字元的特殊含義。這個時候,就需要用到轉義字元\,注:r中的轉義字元則是雙斜槓:\。即使用\?和\.當然,如果我們要找的是\,則使用\\進行匹配。

正規表示式可應用在r環境下的grep、grepl、sub、gsub、regexpr、gregexpr等函式中,都可以用正規表示式中的規律進行匹配。幾個函式的公式如下:

(.,),這個代表著,逗號之前的所有字元作為乙個整體被匹配替換

(\…),這個代表著,句號後面的所有值作為乙個整體被匹配替換

所以最後,只會剩下逗號和句號之間的所有字元。

正規表示式 正規表示式函式 筆記

筆記直接使用pycharm製作,需要原始檔請私聊。正規表示式函式 1.match 2.search 3.全域性匹配函式 全域性匹配 re.compile 正規表示式 findall 資料 import re string poythonydasadcasa pat2 p.y 懶惰模式執行 較精準 r...

正規表示式函式

正規表示式函式 函 數 說 明 regexp like x,pattern match option 從x中搜尋pattern引數中定義的正規表示式。可以使用match option修改預設匹配選項,該引數可以被設定為 c 說明在匹配時區分大小寫 預設選項 i 說明在匹配時不區分大小寫 n 允許使用...

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...