python 正規表示式基礎

2021-10-07 09:50:59 字數 2914 閱讀 2919

正規表示式是乙個特殊的字串行,它能幫助你方便的檢查乙個字串是否與某種模式匹配。

import re  #引入正規表示式庫

file=open("my.txt",encoding="utf-8")

filecontent=file.read()

file.close()

#print(filecontent)

result=re.findall("and",filecontent)

print("'and'有{}個,型別有{}\n".format(len(result),set(result)))

result=re.findall("a..",filecontent) # . 表示乙個字元

print("'a..'有{}個,型別有{}\n".format(len(result),set(result)))

result=re.findall("a[a-z][a-z]",filecontent) #只從a-z中選擇

print("'a[a-z][a-z]'{}個,型別有{}\n".format(len(result),set(result)))

result=re.findall(" a[a-z][a-z] ",filecontent) #在前後新增括號以便保證取出的是乙個完整單詞

print("' a[a-z][a-z] '有{}個,型別有{}\n".format(len(result),set(result)))

result=re.findall(" (a[a-z][a-z]) ",filecontent) #括號表示輸出時,只輸出括號內的內容(查詢時仍按照規則查詢)

print("' (a[a-z][a-z]) '有{}個,型別有{}\n".format(len(result),set(result)))

result=re.findall(" *(a[a-z][a-z]) ",filecontent) # *號表示前乙個字元數量不定,例如a*表示這個位置可以有乙個a或者多個a,也可以沒有a

print("' *(a[a-z][a-z]) '有{}個,型別有{}\n".format(len(result),set(result)))

result=re.findall(" *([aa][a-z][a-z]) ",filecontent) #[aa]表示從aa中取值

print("' *([aa][a-z][a-z]) '有{}個,型別有{}\n".format(len(result),set(result)))

result=re.findall(" (a[a-z][a-z]) |(a[a-z][a-z]) ",filecontent) # | 表示或條件,輸出的結果是列表巢狀元組,表示對應的匹配規則,可以利用條件判斷輸出單詞

print("' (a[a-z][a-z]) |(a[a-z][a-z]) '有{}個,型別有{}\n".format(len(result),set(result)))

result=re.findall("\d",filecontent) # \d 表示數字

print("數字有{}個,有{}\n".format(len(result),(result)))

result=re.findall("\d+",filecontent) # + 表示至少有乙個對應字元 與此類似的還有?表示匹配0個或1個

print("數字有{}個,有{}\n".format(len(result),(result)))

result=re.findall("\d",filecontent) # 表示匹配到字元的,也可以寫成表示匹配兩到八個字元

print("數字有{}個,有{}\n".format(len(result),(result)))

result=re.findall(" (a[^n][^d]) ",filecontent) #[^n]表示匹配除了n以外的其他字元

print("' (a[^n][^d]) '有{}個,型別有{}\n".format(len(result),set(result)))

#其他常見規則

'''\w 匹配字母數字及下劃線

\w 匹配非字母數字及下劃線

\s 匹配任意空白字元,等價於 [\t\n\r\f].

\s 匹配任意非空字元

\d 匹配任意數字,等價於 [0-9].

\d 匹配任意非數字

\a 匹配字串開始

\z 匹配字串結束,如果是存在換行,只匹配到換行前的結束字串。

\z 匹配字串結束

\g 匹配最後匹配完成的位置。

\b 匹配乙個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

\b 匹配非單詞邊界。'er\b' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。

\n, \t, 等. 匹配乙個換行符。匹配乙個製表符。等

\1...\9 匹配第n個分組的內容。

\10 匹配第n個分組的內容,如果它經匹配。否則指的是八進位制字元碼的表示式。

'''

執行結果:
'and'有11個,型別有

'a..'有136個,型別有

' a[a-z][a-z] '有17個,型別有

' (a[a-z][a-z]) '有17個,型別有

' *(a[a-z][a-z]) '有54個,型別有

' *([aa][a-z][a-z]) '有55個,型別有

' (a[a-z][a-z]) |(a[a-z][a-z]) '有18個,型別有

數字有4個,有['1', '4', '5', '9']

數字有3個,有['14', '5', '9']

數字有1個,有['14']

' (a[^n][^d]) '有7個,型別有

Python 正規表示式(基礎)

正規表示式 regular expression 是乙個特殊的字串行,描述了一種字串匹配的模式可以用來檢查乙個串是否含有某種子串 將匹配的子串替換或者從某個串中取出符合某個條件的子串,或者是在指定的文章中,抓取特定的字串等。python處理正規表示式的模組是re模組,它是python語言擁有全部的正...

Python正規表示式基礎

直接給出字元就是精確匹配。特殊字元首先需要轉義如 d 匹配乙個數字,w 匹配乙個字母或者數字。123 d 可以匹配 1231 但是無法匹配 123a d d d 可以匹配到 123 w w w 可以匹配到 py3 表示任意乙個字元,py.可以表示py3 py 等 表示任意長個字元,表示至少乙個字元,...

python基礎(正規表示式)

正規表示式用於搜尋 替換和解析字串。正規表示式遵循一定的語法規則,使用非常靈活,功能強大。使用正規表示式編寫一些邏輯驗證非常方便,例如電子郵件位址格式的驗證。python提供了re模組實現正規表示式的驗證。1.簡介 正規表示式是用於文字匹配的工具,它在源字串中查詢與給定的正規表示式相匹配的部分,乙個...