python 正規表示式的一些使用

2021-09-29 20:22:59 字數 3263 閱讀 1449

這裡是一些常用的正規表示式符號

?匹配零次或一次前面的分組。

匹配零次或多次前面的分組。

+匹配一次或多次前面的分組。

匹配 n 次前面的分組。

匹配 n 次或更多前面的分組。

匹配零次到 m 次前面的分組。

匹配至少 n 次、至多 m 次前面的分組。

?或?或+?對前面的分組進行非貪心匹配。

^spam 意味著字串必須以 spam 開始。

beginswithhello = re.compile(r』^hello』)

beginswithhello.search(『hello world!』)

spam$意味著字串必須以 spam 結束。
endswithnumber = re.compile(r』\d$』)

endswithnumber.search(『your number is 42』)

<_sre.sre_match object; span=(16, 17), match=『2』>

endswithnumber.search(『your number is forty two.』) == none

true

.匹配所有字元,換行符除外。

(.)通配字元

atregex = re.compile(r』.at』)

atregex.findall(『the cat in the hat sat on the flat mat.』)

[『cat』, 『hat』, 『sat』, 『lat』, 『mat』]

和at字母一樣或者比at字母多乙個

(.*) 用點-星匹配所有字元
nameregex = re.compile(r』first name: (.) last name: (.)』)

mo = nameregex.search(『first name: al last name: sweigart』)

mo.group(1)

『al』

mo.group(2)

『sweigart』

\d、\w 和\s 分別匹配數字、單詞和空格。

\d、\w 和\s 分別匹配出數字、單詞和空格外的所有字元。

[abc]匹配方括號內的任意字元(諸如 a、b 或 c)

。[^abc]匹配不在方括號內的任意字元。

search ()findall()

~~ search()將返回乙個 match物件,包含被查詢字串中的「第一次」匹配的文字,而 findall()方法將返回一組

字串,包含被查詢字串中的所有匹配。

貪心模式和非貪心模式區別

nongreedyregex=re.compile(r』<.*?>』)

mo = nongreedyregex.search(』 for dinner.>』)

mo.group()

『《to serve man》』

greedyregex = re.compile(r』<.*>』)

mo = greedyregex.search(』《to serve man》 for dinner.>』)

mo.group()

『《to serve man》 for dinner.>』

。不區分大小寫匹配,使用引數re.i(或者re.ignorecase)

列印全部的字串內容,包括換行符(re.dotall)

管理複雜的正規表示式(re.verbose)

(1)r』』』 … 『』'裡面沒有用乙個總括號擴起來

numbertest2 = re.compile(r』』』

…:(\d)

…: (-)

…: (\d)

…: (-)

…: (\d)

…: 『』』,re.verbose)

numbertest2.findall(『cell:445-222-9999 work : 444-333-0000』)

out[32]: [(『445』, 『-』, 『222』, 『-』, 『9999』), (『444』, 『-』, 『333』, 『-』, 『0000』)]

(2)r』』』 … 『』'裡面用乙個總括號擴起來

numbertest = re.compile(r』』』(

…: (\d)

…: (-)

…: (\d)

…: (-)

…: (\d)

…: )』』』,re.verbose)

: numbertest.findall(『cell:445-222-9999』)

out[26]: [(『445-222-9999』, 『445』, 『-』, 『222』, 『-』, 『9999』)]

組合使用re.i re.dotall 和 re.verbose

(1)如果希望正規表示式不區分大小寫,並且句點字元匹配換行,就可以這

樣構造 re.compile()呼叫:

someregexvalue = re.compile(『foo』, re.ignorecase | re.dotall)

(2)如果希望正規表示式不區分大小寫,並且句點字元不匹配換行,就可以這

樣構造 re.compile()呼叫:

someregexvalue = re.compile(『foo』, re.ignorecase | re.dotall | re.verbose)

一些正規表示式

要嚴格的驗證手機號碼,必須先要清楚現在已經開放了哪些數字開頭的號碼段,目前國內號碼段分配如下 移動 134 135 136 137 138 139 150 151 157 td 158 159 187 188 聯通 130 131 132 152 155 156 185 186 電信 133 153...

一些正規表示式

判斷是否是正整數if isnan paramvalue paramvalue 0 else 金額的格式判斷輸入金額的要求 整數字最多十位,小數為最多為兩位,可以無小數字 0 9 1 9 0 9 0 9 function checkmoney str 0 9 if re.test str else 手...

一些正規表示式

記錄一下 以防忘記 string hello 123 4567 world this is a regsssss res re.match w s d s d s w string 匹配到 hello 123 4567 world this 其中 代表乙個字串的開始 代表乙個字串的結尾 w 匹配字母...