欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解讀python正則表達(dá)式括號(hào)問題

 更新時(shí)間:2022年09月24日 11:33:14   作者:zxdqdcxy  
這篇文章主要介紹了python正則表達(dá)式括號(hào)問題解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

python正則表達(dá)式括號(hào)

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

re.findall(pattern,string)
  • 匹配所有符合正則表達(dá)式的字符,返回一個(gè)列表
re.search(pattern,string)
  • 查找第一個(gè)符合正則表達(dá)式的字符,返回一個(gè)Matcher對(duì)象。用group()或groups()方法取值
re.match(pattern,string)
  • 查找第一個(gè)符合正則表達(dá)式的字符,要求完全符合,返回一個(gè)Matcher對(duì)象。用group()或groups()方法取值

正則表達(dá)式中的圓括號(hào)()的作用是對(duì)字符或元字符分組。

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

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

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

如果正則表達(dá)式中多出使用了圓括號(hào)進(jìn)行分組的話。

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

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

所以在使用正則表達(dá)式時(shí),若像我不太熟悉的話,避免使用圓括號(hào)來把一段表達(dá)式看成一個(gè)整體。

python正則表達(dá)式入門教程括號(hào)及字符

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

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

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

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

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

括號(hào)區(qū)別

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

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

例: 

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

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

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

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

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

常用正則表達(dá)式

匹配名匹配表達(dá)式例子
轉(zhuǎn)義符\“n”匹配字符“n”。"\n"匹配一個(gè)換行符。串行"\\"匹配"\"而"\("則匹配"("
開始位置^"abc,bac"匹配b開頭的bac[^b]([a-z]{3})
結(jié)束位置$"abce,abcd"匹配d結(jié)尾字母[a-z]+d$
表達(dá)式0次或多次* 
表達(dá)式1次或多次+ 
表達(dá)式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] 
雙字節(jié)字符(包含漢子在內(nèi))[^\x00-\xff] 
數(shù)字[0-9]或\d 
非數(shù)字\D 
小寫字母[a-z] 
大寫字母[A-Z] 
大小寫字母[a-zA-Z] 
英文加數(shù)字a-z0-9 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論