解讀python正則表達式括號問題_第1頁
解讀python正則表達式括號問題_第2頁
解讀python正則表達式括號問題_第3頁
解讀python正則表達式括號問題_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第解讀python正則表達式括號問題目錄python正則表達式括號python中re庫函數(shù)的簡單用法python正則表達式入門教程括號及字符括號區(qū)別常用正則表達式

python正則表達式括號

python中re庫函數(shù)的簡單用法

re.findall(pattern,string)

匹配所有符合正則表達式的字符,返回一個列表

re.search(pattern,string)

查找第一個符合正則表達式的字符,返回一個Matcher對象。用group()或groups()方法取值

re.match(pattern,string)

查找第一個符合正則表達式的字符,要求完全符合,返回一個Matcher對象。用group()或groups()方法取值

正則表達式中的圓括號()的作用是對字符或元字符分組。

我錯把它的作用認為是將圓括號內(nèi)的字符看成一個整體。

盡管在一些正則測試網(wǎng)站上,進行匹配時,把括號內(nèi)的字符看成一個整體來匹配也能匹配到想要的結(jié)果。測試網(wǎng)站如:regex101等

然而在在寫python程序的時候,會出現(xiàn)不是我想要的結(jié)果。

如果正則表達式中多出使用了圓括號進行分組的話。

在使用findall方法匹配結(jié)果就會只有分組的結(jié)果(即括號內(nèi)表達式匹配的內(nèi)容),而不是整個表達式所匹配的內(nèi)容。

如果使用search方法匹配,對返回的Matcher對象調(diào)用group()方法可以獲取完整的結(jié)果。但是在需要匹配多個結(jié)果時,還得用findall

所以在使用正則表達式時,若像我不太熟悉的話,避免使用圓括號來把一段表達式看成一個整體。

python正則表達式入門教程括號及字符

數(shù)據(jù)分析遇到字符串處理會有兩個階段涉及到正則表達式,一個是在數(shù)據(jù)庫階段一個是Python處理階段。作為一個小白學(xué)習(xí)正則也遇到很多彎路和難理解的點,梳理梳理學(xué)習(xí)的過程。

hive里面正則表達式可以用regexp_extract()在select里進行返回指定要求的內(nèi)容,也可以用regexp在where里進行指定要求的限制條件;

python里面re.findall()或者df.str.extract()(pandas功能);

正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。學(xué)習(xí)正則需要記住兩類知識點加上實際案例的聯(lián)系就能很快的理解和掌握。

正則中語法規(guī)范:

括號區(qū)別

正則表達式中存在(),[],{}

1、():匹配小括號內(nèi)的字符串,可以是一個,也可以是多個,常跟|(或)符號搭配使用,是多選結(jié)構(gòu)的。()是為了提取匹配的字符串。表達式中有幾個()就有幾個相應(yīng)的匹配字符串

例:

string=我正在學(xué)習(xí)python3的正則表達式,現(xiàn)在的日期是2025-01-22目的給定指定字符串進內(nèi)容進行精準(zhǔn)匹配獲取pythonhiveselectregexp_extract(string,(python),1)返回結(jié)果為:python,1代碼返回正則的第幾個括號中的內(nèi)容pythonre.findall((python),string)返回結(jié)果為:python

2、【】:匹配字符組內(nèi)的字符,比如咱們常用的[0-9a-zA-Z.*!]等,在[]內(nèi)的字符都是字符,不是元字符,比如0-9、a-z這中間的-就是連接符號,表示范圍的元字符,如果寫成[-!*(]這樣的話,就是普通字符例:

string=我正在學(xué)習(xí)python3的正則表達式,現(xiàn)在的日期是2025-01-22目的給定字符進內(nèi)容匹配獲取pythonhiveselectregexp_extract(string,[a-z],0)返回結(jié)果為:python,0代碼返回符合正則的內(nèi)容,如果有小括號可以寫1(如([a-z]+))pythonre.findall([a-z]+,string)返回結(jié)果為:python目的給定字符進內(nèi)容匹配獲取日期2025-01-22hiveselectregexp_extract(string,([0-9]+.[0-9]+.[0-9]+),1)返回結(jié)果為:2025-01-22pythonre.findall([0-9]+.[0-9]+.[0-9]+,string)返回結(jié)果為:2025-01-22需求增加如果我要只需日期22這個部分pythonre.findall([0-9]+.[0-9]+.([0-9]+),string)返回結(jié)果為:22,和上面的對比發(fā)現(xiàn)在最后一個[0-9]+外面加了一個小括號,有小括號就返回小括號里面的內(nèi)容

3、{}一般用來表示匹配的長度,比如\s{3}表示匹配三個空格,\s{1,3}表示匹配一到三個空格例:

string=我正在學(xué)習(xí)python3的正則表達式,現(xiàn)在的日期是2025-01-22目的取出日期數(shù)據(jù)部分結(jié)果為2025,01,22pythonre.findall(([0-9]{2,4}),string)返回結(jié)果為:[2025,01,22],python3中到3是一個數(shù)字,所以指定數(shù)據(jù)個數(shù)為2-4的就為日期部分的數(shù)字

常用正則表達式

匹配名匹配表達式例子轉(zhuǎn)義符\n匹配字符n。\n匹配一個換行符。串行\(zhòng)\匹配\而\(則匹配(開始位置^abc,bac匹配b開頭的bac[^b]([a-z]{3})結(jié)束位置$abce,abcd匹配d結(jié)尾字母[a-z]+d$表達式0次或多次*表達式1次或多次+表達式0次或1次?除\n任意字符.單詞邊界\ber\b可以匹配never中的er,但不能匹配verb中的er非單詞邊界\Ber\B能匹配verb中的er,但不能匹配never中的er換頁符\f空白行\(zhòng)n\s*\r首尾空白字符^\s*\s*$中文

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論