Python正規表示式re庫的使用

2021-09-20 00:20:03 字數 2920 閱讀 4290

({}{})中第乙個大括號替換為.則表示匹配所有字元,替換為則表示匹配中括號內限定的字元;

第二個大括號替換為*則表示匹配長度為》=0,替換為+則表示匹配長度為》=1,替換為空則表示匹配長度為1

(.*)表示匹配任意長度的所有字元

([0-9]*)表示匹配任意長度的數字

([0-9,a-z])表示匹配長度為1的數字和小寫字母

re.findall函式需要傳入2個引數,第1個引數是正規表示式,第2個引數是要進行搜尋的源字串。

re.findall函式返回結果的資料型別為列表,列表中的第1個元素的資料型別為元祖。

示例**如下:

import re

if __name__ == "__main__":

sourcestr = "11房5廳8衛"

sourcestr2 = "a房b廳3衛"

pattern_all = "(.*)房(.*)廳(.*)衛"

pattern_number = "([0-9]*)房([0-9]*)廳([0-9]*)衛"

pattern_numberandletter = "([0-9,a-z])房([0-9,a-z])廳([0-9,a-z])衛"

print("正規表示式找出中間的字元:")

result = re.findall(pattern_all, sourcestr)

print(result,type(result),type(result[0]))

print(re.findall(pattern_all,sourcestr2))

print("正規表示式找出中間的數字")

print(re.findall(pattern_number,sourcestr))

print(re.findall(pattern_number,sourcestr2))

print("正規表示式找出中間的數字和字母")

print(re.findall(pattern_numberandletter, sourcestr))

print(re.findall(pattern_numberandletter, sourcestr2))

上面一段**的執行結果如下:

正規表示式找出中間的字元:

[('11', '5', '8')]

[('a', 'b', '3')]

正規表示式找出中間的數字

[('11', '5', '8')]

正規表示式找出中間的數字和字母

[('1', '5', '8')]

[('a', 'b', '3')]

\s 用於匹配單個空格符,包括tab鍵和換行符; 

\s 用於匹配除單個空格符之外的所有字元;

\d 用於匹配從0到9的數字;

\w 用於匹配字母,數字或下劃線字元;

\w 用於匹配所有與\w不匹配的字元;

. 用於匹配除換行符之外的所有字元。

例如上一節中的([0-9]*)與([\d]*)作用相同

re.search函式需要傳入2個引數,第1個引數是正規表示式,第2個引數是要進行搜尋的源字串。

re.search函式返回結果的資料型別是sre.sre_match物件,span=(3,9)是匹配結果的索引,從索引3開始,不包括索引9。

把re.search函式返回結果賦值給result,通過result.group函式獲取匹配結果,result.group函式需要傳入1個引數,引數的資料型別為無符號整型,引數為0時,為正規表示式匹配到的長句內容;引數為1時,為正規表示式匹配到的第1個小括號中的內容;引數為2時,為正規表示式匹配到的第2個小括號中的內容,依此類推。

示例**如下:

import re

if __name__ == "__main__":

sourcestr = "戶型:3室2廳2衛"

pattern_all = "([\d]*)室(.)廳(.)衛"

result = re.search(pattern_all,sourcestr)

print(result)

print(result.group(0))

print(result.group(1))

print(result.group(2))

print(result.group(3))

上面一段**的執行結果如下:

<_sre.sre_match object; span=(3, 9), match='3室2廳2衛'>

3室2廳2衛32

2

re,match在實際應用中很少,不建議使用。

re.match能夠匹配的前提是必須字串索引0的位置能夠匹配到。

import re

if __name__ == "__main__":

re1 = "hel."

re2 = ".el"

re3 = ".hel"

re4 = "el"

sourcestr = "hello"

print(re.match(re1,sourcestr))

print(re.match(re2,sourcestr))

print(re.match(re3,sourcestr))

print(re.match(re3,sourcestr))

上面一段**的執行結果如下:

<_sre.sre_match object; span=(0, 4), match='hell'>

<_sre.sre_match object; span=(0, 3), match='hel'>

none

none

正規表示式 re庫

1.正規表示式的概念 a.為什麼要用正則?用字串匹配也是可以的 startswith 方法用於檢查字串是否是以指定子字串開頭,如果是則返回 true,否則返回 false。如果引數 beg 和 end 指定值,則在指定範圍內檢查。endswith 方法用於判斷字串是否以指定字尾結尾,如果以指定字尾結...

python 正規表示式 re

match 和 search 的區別 match是從字串開頭匹配,而search是在整個字串中匹配。如 p re.compile a z p.match message none 因為開頭是 因此無法匹配 而 m p.search message print m re.matchobject ins...

python正規表示式 re

re.match 嘗試從字串的開始匹配乙個模式,如 下面的例子匹配第乙個單詞。import retext jgood is a handsome boy,he is cool,clever,and so on.m re.match r w s text ifm print m.group 0 n m...