Python中常見的正規表示式符號

2022-05-03 06:09:05 字數 1708 閱讀 6207

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

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

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

匹配n次前面的分組

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

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

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

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

^spam 意味著字元必須以spam開始

spam$ 意味著字元必須以spam結束

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

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

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

[abc] 匹配方括號內的任意字元。(例如abc)

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

常用的字元分類

\d 0~9的任意數字

\d 除0~9外的任意數字

\w 任何字母,數字,下劃線字元(可以認為是匹配「單詞」字元)

\w 除字母,數字或下劃線字元(可以認為是匹配「單詞」字元)

\s 空格,製表符和換行符(可以認為是匹配「空白」字元)

\s 除空格,製表符和換行符以外的任何字元

--------摘自《python程式設計快速上手-讓繁瑣的功能自動化》

書上有乙個驗證郵箱和**號碼的例子,一併貼上來

#

新增複製和正規表示式的模組

import

pyperclip,re

#建立**的正規表示式

phoneregex = re,compile(r'''

( (\d\))?

(\s|-|\.)?

(\d)

(\s|-|\.)

(\d)

(\s*(ext|x|ext\.)\s*(\d))?

)''',re.verbose)

#建立郵箱的正規表示式

emailregex = re.compile(r'''

( [a-za-z0-9._%+-]+

@[a-za-z0-9.-]+

(\.[a-za-z])

)''',re.verbose)

#在貼上板中找到相關的文字資料

text =str(pyperclip.paste)

matches =

for groups in

phoneregex.findall(text):

phonenum = '

-'.join('

-').join([groups[1],groups[3],groups[5]])

if groups[8] != ""

: phonenum += "

x"+ groups[8]

for groups in

emailregex.findall(text):

#將整理好的字元輸出

if(len(matches) >0 ):

pyperclip.copy('n

'.join(matches))

print('

copied to cli[board:')

print('\n'

.join(matches))

else

:

print('

no phone numbers or email addresses found

')

**示例

Python常見正規表示式

一 校驗數字的表示式 數字 0 9 n位的數字 d 至少n位的數字 d m n位的數字 d 零和非零開頭的數字 0 1 9 0 9 非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 帶1 2位小數的正數或負數 d d 正數 負數 和小數 d d 有兩位小數的正實數 0 9 0 9 有1 3位小...

python中常用正規表示式

print re.findall d 123abc 數字 1 2 3 print re.findall d abcaa123abc 非數字 a b c a a a b c print re.findall abc 123abcaaabc abc abc print re.findall aa nab...

python中常用正規表示式

1 匹配字母數字和下劃線 a za z0 9 等價於 w 取非 a za z0 9 等價於 w 2 匹配數字 0 9 等價與 d d 表示任意個數字。取非 0 9 等價與 d u4e00 u9fa5 匹配單個漢字,不含標點符號 u4e00 u9fa5 匹配詞語或以上漢字 取非 u4e00 u9fa5...