在解決titanic生存**的時候,需要從名字一列中提取出title時,使用了gsub()函式,但是看到了這行**的時候,心裡時罵娘的,各種代號根本看不懂其意義,所以這篇文章來詮釋下什麼是正規表示式。
我們日常生活中接觸到的大部分資料都是以文字的形式存在。文字分析與挖掘在業界中也有著非常廣泛的應用。
由於文字資料大多屬於非結構化的資料,要想對文字資料進行傳統的統計模型分析,必須要經過層層的資料清洗與整理。
正規表示式和r中gsub()函式就是用來幹這些字串處理的。
大部分的字母和所有的數字都是匹配他們自身的正規表示式。比如:a就是a,1就是1,沒有特殊的含義。然而,在正規表示式的語法規定中,有12個字元被保留用作特殊用途。他們分別是:
如果我們直接進行對這些特殊字元進行匹配,是不能匹配成功的。正確理解他們的作用與用法,至關重要。# [ ]:括號內的任意字元將被匹配;
在r裡做個實驗
結果是:
# \ :具有兩個作用:
1.對元字元進行轉義(後續會有介紹)
2.一些以\開頭的特殊序列表達了一些字串組
\f 換頁符# ^:匹配字串的開始,置於character class的首位表達的意思是取反義。如[^5]表示匹配除了」5」以外的任何字元。再r裡做個實驗:\n 換行符
\r 回車符
\t 製表符(tab)
\v 垂直製表符
\d 匹配數字與非數字任何乙個數字字元,等價於[0-9]
\w 匹配字母\非字母與數字任何乙個字母數字字元(大小寫均可以)或下劃線字元(等價於[a-za-z0-9])
\s 任何乙個空白字元(等價於[\f\n\r\t\v])
結果是:
$ :匹配字串的結束,放在句尾,表示一行字串的結束。但將它置於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...