1. 程式人生 > >Python中-正則表示式-說明

Python中-正則表示式-說明

正則表示式:

(regular expression)
—>>>正則表示式是用來簡潔表達一組字串的表示式
是一個描述字串模式的物件
正則表示式主要用來驗證使用者的資料,
以及對文字內容的資訊過濾,獲取滿足條件的內容
這樣做的好處是提高匹配效率,減少遍歷時間
正則表示式有自己的語法,字元,操作符組成

符號說明

.			表示任何單個字元
[] 			字符集,對單個字元給出取值範圍	[abc]表示a,b,c,[a-z]表示a到z單個字元
[^]		非字符集,對單個字元給出排除範圍	[^abc]表示非a或b或c的單個字元
*			前一個字元0次或無限次擴充套件		abc* 表示 ab,abc,abcc,abccc等
+			前一個字元1次或無限次擴充套件		abc+ 表示 abc,abcc,abccc等
?			前一個字元0次或1次擴充套件		abc? 表示ab,abc
|			左右表示式任意一個		abc|def 表示 abc,def
{m}		擴充套件前一個字元m次		ab{2}c 表示 abbc
{m,n}	擴充套件前一個字元m至n次(含n)	ab{1,2}c 表示abc,abbc
^			匹配字串開頭			^abc表示abc 並且在一個字串的開頭
$			匹配字串結尾			abc$表示abc 並且在一個字串的結尾
()			分組標記,內部只能使用|操作符	(abc)表示abc, (abc|def)表示abc,def
\d			數字,等價於[0-9]
\w		單詞字元,等價於[A-Z a-z 0-9]

re.search() 在一個字串中搜索匹配正則表示式的第一個位置,返回match物件
re.match() 從一個字串的開始位置起匹配正則表示式,返回match物件
re.findall() 搜尋字串,以列表型別返回全部能匹配的字串
re.split() 將一個字串按照正則表示式匹配結果進行分割,返回列表型別
re.finditer() 搜尋字串,返回一個匹配結果的迭代型別,每個迭代元素是match物件
re.sub() 在一個字串中替換所有匹配正則表示式的字串,返回替換後的字串

re.search(pattern, string, flags=0)
在一個字串中搜索匹配正則表示式的第一個位置,返回match物件
pattern:正則表示式的字串或原生字串表示
string:待匹配字串
flags:正則表示式使用時的控制標記

import re
#正則的()是用來分組的
match = re.search(r’([0-9])([a-zA-Z])([0-9]*)’, ‘1a2b3cabc123’)
print(match)
print(type(match))

‘’’
group() 用來提取分組截獲得字串 (數字)用來表示分組
r’([0-9])([a-zA-Z])([0-9]*)’ 正則表示式中的3組() 把匹配結果分成3組
group() == group(0) 匹配正則表示式的整體結果
group(1) 表示匹配第一個() 的匹配部分
同理有幾個() 就有幾個 group()分組
注意,如果正則表示式中沒有() 意思明確是沒有分組, so group(1) 就會出現錯誤
‘’’

eg:

if match:
print(match.group(0))# 返回match
print(match.group(1))
print(match.group(2))
print(match.group(3))
print(’-’*50)
print(match[0])
print(match[1])

對文件中所有的文字內容進行正則比對
print(soup.find(text=re.compile(‘sisters’)))
print(soup.find_all(text=re.cpmpile(‘sisters’)))
對文件中所有的屬性中指定的屬性進行比對
print(soup.find_all(href=re.compile(‘elsie’), id=‘link1’, class_=‘sister’))