python正規表示式學習及其運用例項(陸續更新)

2021-10-24 20:30:14 字數 3108 閱讀 3694

2.常用例項

import re

即可使用

一定要注意,正則的書寫,每個符號都要為之慎重

慢慢遇見,慢慢新增~

#1

. 匹配除換行符(\n、\r)之外的任何單個字元,相等於 [

^\n\r]

\d 所有數字

\d 所有非數字

\s 匹配所有空白符

\s 非空白符,不包括換行

\w 匹配字母、數字、下劃線。等價於 [a-za-z0-9_]

[a-z]

[a-z] 表示乙個區間,匹配所有大寫字母

[a-z]

[a-z] 表示所有小寫字母

[\u4e00-\u9fa5] 所有中文字元

[^\u4e00-\u9fa5] 所有非中文本元

^   匹配輸入字串開始的位置。如果設定了 regexp 物件的 multiline 屬性,^ 還會與 \n 或 \r 之後的位置匹配。

$ 匹配輸入字串結尾的位置。如果設定了 regexp 物件的 multiline 屬性,$ 還會與 \n 或 \r 之前的位置匹配。

line = re.sub(

r'/[m|n]$',''

,line)

\b 匹配乙個單詞邊界,即字與空格間的位置。

\b 非單詞邊界匹配。

* 匹配前面的子表示式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於。

+ 匹配前面的子表示式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 。

? 匹配前面的子表示式零次或一次。例如,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。? 等價於 。

n 是乙個非負整數。匹配確定的 n 次。例如,'o' 不能匹配 "bob" 中的 'o',但是能匹配 "food" 中的兩個 o。

n 是乙個非負整數。至少匹配n 次。例如,'o' 不能匹配 "bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o' 等價於 'o+'。'o' 則等價於 'o*'。

m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o" 將匹配 "fooooood" 中的前三個 o。'o' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格

這裡就是將re.sub(r』』,』』,string)的第二個引數由字串等形式更換為函式,替換的就更為靈活,只需要寫出自己想要使用的函式即可,在呼叫該函式時,如下圖示例呼叫即可

def

get_tail_1

(line)

:'''

啦啦,保留『拉』

'''return

str(line.group())

[-2:

-1]……

line=re.sub(

r'([\u4e00-\u9fa5]\)'

,get_tail_1,line)

>>

> t=

'aabbccdd123'

>>

> line1=re.findall(

'[abc]'

,t)>>

> line1

['a'

,'a'

,'b'

,'b'

,'c'

,'c'

]>>

> line1=re.findall(

'aa|bb|cc'

,t)>>

> line1

['aa'

,'bb'

,'cc'

]

目前來看,兩個符合不能共同使用,會衝突,如下面的例子:

>>

> line1=re.findall(

'[aabbcc]'

,t)>>

> line1

['a'

,'a'

,'b'

,'b'

,'c'

,'c'

]>>

> line1=re.findall(

'[aa|bb|cc]'

,t)>>

> line1

['a'

,'a'

,'b'

,'b'

,'c'

,'c'

]# 也就是說 內 | 失去了作用,一直都沒發現

>>

> line1=re.findall(

'aa|bb|cc'

,t)>>

> line1

['aa'

,'bb'

,'cc'

]

#2

ret=re.match(

"(\d+)([+-])(\d+)"

,t)#數字 + - 數字

\d+0-

9任意數字一次或任意次

#4words=re.findall(

"(\s+)\("

,line)

s不加空格的,+至少乙個,以(結束的最長字串

#5

words = re.findall(

r'(\s+)\/(\s+)'

,line)

尋找以非空字元開始,非空字元結束,中間是/符號的一組字元

如:當/p

#6pys=re.findall(

"\(([^\(\)]+)\)"

,line)

以(開始,以)結束,中間沒有()的

#8 pys=re.findall(

"\((.*?)\)"

,line

以(開始,以)結束,

?匹配前面的子表示式零次或一次,或指明乙個非貪婪限定符。要匹配 ? 字元,請使用 \?。

sentences=re.sub(

r'[^\u4e00-\u9fa5]',''

,str

(sentences)

) 替換掉所有非中文本元

python正規表示式及其應用

正規表示式是一種用來匹配字串的強有力的 它的設計思想是用一種描述性的語言來給字串定義乙個規則,凡是符合規則的字串,我們就認為它 匹配 了,否則,該字串就是不合法的。1 直接給出字元,精確匹配 2 d可以 匹配乙個數字 3 w 可以匹配乙個字母或數字 4 可以匹配任意字元 5 用 表示任意個字元 包括...

Python 正規表示式學習(二)正規表示式語法

一,單一字元匹配 1 匹配任意字元 import re res re.match r a.abcd print res.group 列印結果 abc一點.表示匹配任意的字元。上面的 表示匹配a後面的任意兩個字元。必須從a開始。若寫成 b.則會發生錯誤。2 匹配指定字元 如 0 9a za z 表示 ...

python正規表示式學習

今天學習了python中有關正規表示式的知識。關於正規表示式的語法,不作過多解釋,網上有許多學習的資料。這裡主要介紹python中常用的正 則表示式處理函式。re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import re text jgood is a handso...