正規表示式

2021-08-11 11:14:06 字數 2137 閱讀 9264

基礎匹配規則

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

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

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

\s 匹配任意非空字元

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

\d 匹配任意非數字

\a 匹配字串開始

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

\z 匹配字串結束

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

\n 匹配乙個換行符

\t 匹配乙個製表符

^ 匹配字串的開頭

$ 匹配字串的末尾。

. 匹配任意字元,除了換行符,當re.dotall標記被指定時,則可以匹配包括換行符的任意字元。

[...] 用來表示一組字元,單獨列出:[amk] 匹配 'a','m'或'k'

[^...] 不在中的字元:[^abc] 匹配除了a,b,c之外的字元。

* 匹配0個或多個的表示式。

+ 匹配1個或多個的表示式。

? 匹配0個或1個由前面的正規表示式定義的片段,非貪婪方式

精確匹配n個前面表示式。

匹配 n 到 m 次由前面的正規表示式定義的片段,貪婪方式

a|b 匹配a或b

( ) 匹配括號內的表示式,也表示乙個組

在python中的運用方式

import re
匯入re模組 官方文件

幾種匹配方式

* re.match()

re 模組的的函式 re.match(引數1,引數2,引數3)

引數1:正規表示式;

引數2:匹配字串;

引數3:匹配模式(貪婪…)

用法:從開頭開始匹配;

```

import re

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

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

print(result)

print(result.group())

print(result.span())

```* re.search()

引數與上面差不多;re.search 掃瞄整個字串並返回第乙個成功的匹配。如上例,匹配4567不需要從hello開始匹配,從123開始匹配就可以了;

* re.findall()

re.findall() 搜尋字串,以列表形式返回全部能匹配的子串如'hello 123 4567 world_this is a regex demo world_this is a '出現了兩個world,用re.search(),可以匹配到第乙個world,用findall()則可以匹配兩個。

* re.sub

替換字串中每乙個匹配的子串後返回替換後的字串。

```import re

content = 'extra stings hello 1234567 world_this is a regex demo extra stings'

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

print(content)

```輸出結果吧1234567變成" "了

* re.compile()

將乙個正規表示式compile成乙個規則,多次復用;

```import re

content = '''hello 1234567 world_this

is a regex demo'''

pattern = re.compile('hello.*demo', re.s)

result = re.match(pattern, content)

print(result)

```

另 貪婪模式:當用.匹配多個字元時,如」akfjkfkgsfjgsj9793@#¥%…………@54866686123456」匹配後面的數字,用」.「匹配,他會預設吧後面數字也匹配到只剩下乙個「6」,賊貪婪,防止這種情況發生,用」.?」匹配會匹配到你想要的結果。

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...