? 匹配零次或一次前面的分組
* 匹配零次或多次前面的分組
+ 匹配一次或多次前面的分組
匹配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...