python 正規表示式

2021-09-01 23:55:35 字數 2086 閱讀 1813

#coding=utf-8

#version:python 3.6.0

#tools:pycharm 2017.3.2

import re

content ='hello 123 4567 world_this is a regex demo'

# print(len(content))

# 開頭的^是匹配字串的開頭,也就是以 hello 開頭;然後\s匹配空白字元,用來匹配目標字串的空格;\d匹配數字,3個\d匹配 123;然後再寫1個\s匹配空格;後面還有 4567 ,我們其實可以依然用4個\d來匹配,但是這麼寫比較煩瑣,所以後面可以跟以代表匹配前面的規則4次,也就是匹配 4 個數字;然後後面再緊接 l 個空白字元,最後\w匹配 10 個字母及下劃線.

result = re.match('^hello\s\d\d\d\s\d\s\w', content)

# print(result)

print(result.group())

print(result.span())

# 可以使用()括號將想提取的子字串括起來.()實際上標記了乙個子表示式的開始和結束位置,被標記的每個子表示式會依次對應每乙個分組.呼叫group()方法傳入分組的索引即可獲取提取的結果.

result = re.match('hello\s(\d+)\sworld', content)

print(result)

print(result.group())

print(result.group(1))

# 其中.(點)可以匹配任意字元(除換行符),*(星)代表匹配前面的字元無限次,所以它們組合在一起就可以匹配任意字元了

result = re.match('^hello.*demo$', content)

# 貪婪與非貪婪

# (.*)貪婪匹配是盡可能匹配多的字元,(.*?)非貪婪匹配就是盡可能匹配少的字元,而交給後面的\d去匹配,如果匹配的結果在字串結尾,.*?就有可能匹配不到任何內容了,因為它會匹配盡可能少的字元

# 當遇到換行符時,.*?的就不能匹配了,所以導致匹配失敗.這裡只需加乙個修飾符 re.s ,即可修正這個錯誤:

result1 = re.match('^hello.*?(\d+).*?demo$', content, re.s)

# 當遇到用於正則匹配模式的特殊字元時,在前面加反斜線轉義一下即可

# match()方法是從字串的開頭開始匹配的,一旦開頭不匹配,那麼整個匹配就失敗了

#方法search(),它在匹配時會掃瞄整個字串,然後返回第乙個成功匹配的結果.也就是說,正規表示式可以是字串的一部分,在匹配時,search()方法會依次掃瞄字串,直到找到第乙個符合規則的字串,然後返回匹配內容,

# 把match()換成search()就好了

# search()只返回匹配到的第乙個內容,findall()可返回全部

# sub()

# 第乙個引數傳入\d+來匹配所有的數字,第二個引數為替換成的字串(如果去掉該引數的話,可以賦值為空),第三個引數是原字串.

content = '54aks4yrsoirs4ixsl2g'

content = re.sub('\d+', '', content)

print(content)

#執行結果: akyroirixlg

# 在適當的時候,借助sub()方法可以起到事半功倍的效果

# compile()

# 這個方法可以將正則字串編譯成正規表示式物件,以便在後面的匹配中復用

import re

contentl = '2016 12 15 12:00'

content2 = '2016-12-17 12:55'

pattern = re.compile('\d:\d')

resultl = re.sub(pattern, '', contentl)

result2 = re.sub(pattern, '', content2)

print(result1, result2)

# compile()還可以傳入修飾符,例如re.s等修飾符,這樣在search(),findall()等方法中就不需要額外傳了

明天抽空碼一下多執行緒爬蟲

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...