Python基礎10,正規表示式

2021-10-22 18:30:59 字數 3630 閱讀 3176

re模組

1,findall方法

找出所有符合規則的字串,匹配不到返回為空列表

str1 =

'人生若只如初見,何事秋風悲畫扇'

result = re.findall(

'只如初見'

,str1)

# 精準匹配

print

(result)

match

只能匹配到乙個,從字串的起始位置開始匹配,沒有匹配到返回none

str2 =

'python123'

result = re.match(

'python'

,str2)

print

(result)

group 提取到匹配的內容

a = result.group(

)print

(a)

span 提取到匹配字串的下標

b = result.span(

)print

(b)

search

只能匹配到乙個符合條件的字串,找到了就返回

result = re.search(

'123'

,str2)

print

(result)

match和search的區別:

match從字串的開始位置匹配,如果字串一開始就不符合規則,則匹配失敗,返回none

search匹配整個字串,如果一直找不到,返回none

都只返回乙個符合條件的

findall會找到所有符合規則的字串

2,元字元

.代表任意乙個字元

str1 =

'高堂明鏡悲白髮,朝如青絲暮成雪'

result = re.findall(

'高堂明鏡...',str1)

print

(result)

字元組 匹配中列舉的字元組

result = re.findall(

'[8]'

,str1)

# [0-9]

print

(result)

str1 =

'ab ac ad'

result = re.findall(

'a[bc]',str1)

# ab ac

print

(result)

整個中括號只代表乙個字元

錨點元字元 ^字串首 $字串尾

str1 =

'高堂明鏡悲白髮,朝如青絲暮成雪'

re.findall(

'^高堂明鏡',str1)

print

(result)

re.findall(

'暮成雪$',str1)

print

(result)

\b 單詞邊界

str2 =

'hello sayhello'

result = re.findall(

'\bhello'

,str2)

#3個hello

#(r'\bhello',str2) r反轉義,2個hello

print

(result)

{}控制次數

控制的是前乙個字元出現的次數,可以直接寫次數,數字代表數量

str3 =

'abbbbc'

result = re.findall(

'abc'

,str3)

result = re.findall(

'abc'

,str3)

#可以填區間左閉右閉

result = re.findall(

'abc'

,str3)

# 起始位置不寫,從0開始

result = re.findall(

'abc'

,str3)

# 終止位置不寫,可到正無窮

print

(result)

\d 匹配數字

str4 =

'abc123'

result = re.findall(r'\d'

,str4)

print

(result)

\d 匹配非數字

result = re.findall(r'\d'

,str4)

print

(result)

\s匹配空格

str5 =

result = re.findall(r'\s'

,str4)

\s匹配非空格

str5 =

result = re.findall(r'\s'

,str4)

\w 匹配單詞字元和數字

str5 =

result = re.findall(r'\w'

,str4)

\w 匹配非單詞字元和數字

str5 =

result = re.findall(r'\w'

,str4)

*匹配前面的字元出現0次或無限次,即可有可無

+匹配前乙個字元出現1次或者無限次,即至少有一次

?匹配乙個字元出現0次或者1次

str3 =

'abbbbc'

result = re.findall(

'abc'

,str3)

|選擇元字元

str7 =

'a+bhelloa-bhello'

result = re.findall(r'a\+b|a-b'

,str7)

# \+表示轉義字元

()將括號中字元作為乙個分組,只提取括號當中的內容

3,貪婪模式:盡可能多的去匹配

str3 =

'abbbbbbbbb'

result = re.findall(

'ab*'

,str3)

print

(result)

非貪婪模式:剛達到標準就可以

str3 =

'abbbbbbbbb'

result = re.findall(

'ab*?'

,str3)

print

(result)

[email protected]

str1 =

'[email protected]'

result = re.findall(r'^\[email protected]$'

,str1)

print

(result )

Python 正規表示式(基礎)

正規表示式 regular expression 是乙個特殊的字串行,描述了一種字串匹配的模式可以用來檢查乙個串是否含有某種子串 將匹配的子串替換或者從某個串中取出符合某個條件的子串,或者是在指定的文章中,抓取特定的字串等。python處理正規表示式的模組是re模組,它是python語言擁有全部的正...

Python正規表示式基礎

直接給出字元就是精確匹配。特殊字元首先需要轉義如 d 匹配乙個數字,w 匹配乙個字母或者數字。123 d 可以匹配 1231 但是無法匹配 123a d d d 可以匹配到 123 w w w 可以匹配到 py3 表示任意乙個字元,py.可以表示py3 py 等 表示任意長個字元,表示至少乙個字元,...

python基礎(正規表示式)

正規表示式用於搜尋 替換和解析字串。正規表示式遵循一定的語法規則,使用非常靈活,功能強大。使用正規表示式編寫一些邏輯驗證非常方便,例如電子郵件位址格式的驗證。python提供了re模組實現正規表示式的驗證。1.簡介 正規表示式是用於文字匹配的工具,它在源字串中查詢與給定的正規表示式相匹配的部分,乙個...