日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

解讀python正則表達式括號問題_python

作者:zxdqdcxy ? 更新時間: 2022-11-14 編程語言

python正則表達式括號

python中re庫函數的簡單用法

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

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

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

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

然而在在寫python程序的時候,會出現不是我想要的結果。

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

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

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

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

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

數據分析遇到字符串處理會有兩個階段涉及到正則表達式,一個是在數據庫階段一個是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{3} 表示匹配三個空格,\s{1,3}表示匹配一到三個空格例:

string= ‘我正在學習python3的正則表達式,現在的日期是2019-01-22’
目的 取出日期數據部分結果為2019,01,22
python re.findall(’([0-9]{2,4})’,string) 返回結果為:[2019,01,22],python3中到3是一個數字,所以指定數據個數為2-4的就為日期部分的數字

常用正則表達式

匹配名 匹配表達式 例子
轉義符 \ “n”匹配字符“n”。"\n"匹配一個換行符。串行"\\"匹配"\"而"\("則匹配"("
開始位置 ^ "abc,bac"匹配b開頭的bac[^b]([a-z]{3})
結束位置 $ "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 ?

原文鏈接:https://blog.csdn.net/weixin_43917430/article/details/108935233

欄目分類
最近更新