正規表示式

2022-08-23 03:27:07 字數 2597 閱讀 2575

一、正規表示式概念

正規表示式(regular expression)描述了一種字串匹配的模式(pattern),可以用來檢查乙個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。

二、常用的re方法

#

匯入正則模組包

importre#

re.findall方法:在字串中找到正規表示式所匹配的所有字串,並返回乙個列表,如果沒有匹配的,則返回空列表

#從compile()函式的定義中,可以看出返回的是乙個匹配物件,它單獨使用就沒有任何意義,需要和findall(), search(), match()搭配使用。

a = '

123abc445bcdi8dh8j'#

一下兩行**也可以進行匹配,使用compile函式生成乙個匹配規則物件。

#yan = re.compile('[a-za-z]+')

#b = yan.findall(a)

b= re.findall(r'

[a-za-z]+

',a)

print(b)

['abc', 'bcdi', 'dh', 'j']
#

re.serch方法:掃面整個字串,匹配成功就返回乙個物件,就不再往下找了。

import

rea = '

123abc445bcdi8dh8j

'b = re.search('bc'

,a)print

(b)#

通過group()檢視匹配的內容,span()檢視匹配的內容的下標

print

(b.group())

print(b.span())

none
#

re.match方法:只從開始位置的字串進行匹配,匹配成功就返回乙個匹配物件;如果不是起始字串匹配成功,就返回為空

import

rea = '

123abc445bcdi8dh8j

'b = re.match('

123'

,a)print

(b)c = re.match('

8dh'

,a)print(c)

bc

(4, 6)

#

re.split分割:通過定義的分割規則進行字串分割

#\d+:匹配數字,0—9;\w+:匹配非單詞向量

import

restr1 = '

one1two2tree3four4fine

'str2 = '

one,two,tree,four,fine

'str3 = re.split('

\d+'

,str1)

str4 = re.split('

\w+'

,str2)

print

(str3)

print(str4)

['one', 'two', 'tree', 'four', 'fine']

['one', 'two', 'tree', 'four', 'fine']

#

re.sub()替換字串中每乙個匹配的自串後返回新的字串

str1 = '

one1two2tree3four4fine

'print(re.sub('

\d','

-',str1))

one-two-tree-four-fine
#

re.finditer:引用分組

import

re str = '

hello 123,word 321

'pattern = re.compile('

\w+ \d+')

#print(pattern.finditer(str)) 返回乙個物件

for i in

pattern.finditer(str):

#group(0)返回乙個完整的字串內容

print

(i.group(0))

pattern1 = re.compile('

(\w+) (\d+)')

for i in

pattern1.finditer(str):

print

(i.group(0))

print(i.group(1))

print(i.group(2))

hello 123

word 321

hello 123

hello

123word 321

word

321

#

匹配中文字元

import

restr = '

帥哥 123,美女 321

'pattern = re.compile('

[\u4e00-\u9fa5]+')

print(pattern.findall(str))

['帥哥', '美女']

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...