資料分析遇到字串處理會有兩個階段涉及到正規表示式,乙個是在資料庫階段乙個是python處理階段。作為乙個小白學習正則也遇到很多彎路和難理解的點,今天就梳理梳理學習的過程。
hive裡面正規表示式可以用regexp_extract()
在select裡進行返回指定要求的內容,也可以用regexp
在where裡進行指定要求的限制條件;
python裡面re.findall()
或者df.str.extract()
(pandas功能);
正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配。學習正則需要記住兩類知識點加上實際案例的聯絡就能很快的理解和掌握。
正則中語法規範:
正規表示式中存在()
,,
{}
1、():匹配小括號內的字串,可以是乙個,也可以是多個,常跟「|」(或)符號搭配使用,是多選結構的。() 是為了提取匹配的字串。表示式中有幾個()就有幾個相應的匹配字串
例:string=
『我正在學習python3的正規表示式,現在的日期是2019-01-22』
目的給定指定字串進內容進行精準匹配獲取python
hive
select regexp_extract(string,』(python)』,1)返回結果為:python
,1**返回正則的第幾個括號中的內容
python
re.findall(』(python)』,string)返回結果為:python
2、【】:匹配字元組內的字元,比如咱們常用的[0-9a-za-z.*?!]
等,在內的字元都是字元,不是元字元,比如「0-9」、「a-z」這中間的「-」就是連線符號,表示範圍的元字元,如果寫成[-!?*(]
這樣的話,就是普通字元
例:string=
『我正在學習python3的正規表示式,現在的日期是2019-01-22』
目的給定字元進內容匹配獲取python
hive
select regexp_extract(string,』[a-z]』,0)返回結果為:python,0**返回符合正則的內容,如果有小括號可以寫1(如'([a-z]+)')
python
re.findall(』[a-z]+』,string)返回結果為:python
目的給定字元進內容匹配獲取日期2019-01-22
hive
select regexp_extract(string,』([0-9]+.[0-9]+.[0-9]+)』,1)返回結果為:2019-01-22
python
re.findall(』[0-9]+.[0-9]+.[0-9]+』,string)返回結果為:2019-01-22
需求增加
如果我要只需日期22這個部分
python
re.findall(』[0-9]+.[0-9]+.([0-9]+)』,string)返回結果為:22,和上面的對比發現在最後乙個[0-9]+外面加了乙個小括號,有小括號就返回小括號裡面的內容
3、一般用來表示匹配的長度,比如 \s 表示匹配三個空格,\s表示匹配一到三個空格
例:string=
『我正在學習python3的正規表示式,現在的日期是2019-01-22』
目的取出日期資料部分結果為2019,01,22
python
re.findall(』([0-9])』,string)返回結果為:[2019,01,22],python3中到3是乙個數字,所以指定資料個數為2-4的就為日期部分的數字
匹配名匹配表示式
例子轉義符
\「n」匹配字元「n」。"\n"匹配乙個換行符。序列"\\"匹配"\"而"\("則匹配"("
開始位置
^"abc,bac"匹配b開頭的bac[^b]([a-z])
結束位置
$"abce,abcd"匹配d結尾字母[a-z]+d$
表示式0次或多次
*表示式1次或多次
+表示式0次或1次
?除\n任意字元
.單詞邊界
\b「er\b」可以匹配「never」中的「er」,但不能匹配「verb」中的「er」
非單詞邊界
\b「er\b」能匹配「verb」中的「er」,但不能匹配「never」中的「er」
換頁符\f
空白行\n\s*\r
首尾空白字元
^\s*
\s*$
中文字元
[\u4e00-\u9fa5]
雙位元組字元(包含漢子在內)
[^\x00-\xff]
數字[0-9]或\d
非數字\d
小寫字母
[a-z]
大寫字母
[a-z]
大小寫字母
[a-za-z]
英文加數字
a-z0-9
正規表示式入門教程
元字元原義字元 非列印字元 字元類預定義類 邊界量詞 貪婪與懶惰 非貪婪 3.練習一下 先來看看幾個常用的案例。手機號碼正規表示式 1 345789 0 9 解釋 最外的 是正則的表示式的標誌,表示以什麼開頭,表示哪些可選項,表示出現幾次,以什麼結尾。手機號案例 以1開頭,第2位為 3,4,5,7,...
正規表示式入門教程
正規表示式,又稱正規表示法 常規表示法 英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。正規表示式使用單個字串來描述 匹配一系列符合某個句法規則的字串。在很多文字編輯器裡,正規表示式通常被用來檢索 替換那些符合某個模式的文字。在編寫處理字...
正規表示式入門教程
表1.常用的元字元 匹配除換行符以外的任意字元 w匹配字母或數字或下劃線或漢字 s匹配任意的空白符 d匹配數字 b匹配單詞的開始或結束 匹配字串的開始 匹配字串的結束 表2.常用的限定符 語法說明 重複零次或更多次 重複一次或更多次 重複零次或一次 重複n次 重複n次或更多次 重複n到m次 3 正規...