正規表示式

2021-08-17 10:08:12 字數 1786 閱讀 4270

字元

功能等價

.除\n任意字元

[ ]匹配[ ]中列舉的字元

\d數字

[0-9]

\d非數字

[^0-9]

\s空白字元, 空格,tab \n\t\r\f\v

\s非空白

[^\n\t\r\f\v]

\w字母數字

[a-za-z0-9_]

\w非字母數字

[^a-za-z0-9_]

字元功能

*0次或n次

+1次或n次

?1次或者0次

m次m~n次均可

至少m次

至多n次

貪婪(預設)

盡可能匹配多的字元

非貪婪盡可能匹配少的字元

上文中多個字元"*","?","+",""後面加上,使貪婪變成非貪婪。

四、開頭結尾

^行的開頭

$行的結尾

|左右任意乙個表示式即可

(ab)

將括號中字元作為乙個分組

\num

引用分組num匹配到的字串

(?p)

分組起別名

(?p=name)

引用別名為name分組匹配到的字串

re.i

忽略大小寫

re.m

匹配多行

re.s

指定".", 匹配所有字元,包括\n

match從開頭匹配資料,輸出為列表

import re

# 使用match方法進行匹配操作

pattern = re.compile(r'模式')

result = re.match(正規表示式,要匹配的字串)

# 如果上一步匹配到資料的話,可以使用group方法來提取資料

result.group()

.group()

引數為0或空返回整個匹配

有引數返回特定的分組細節

.groups()

返回包含所有子分組的元組

search匹配自己想要資料,僅匹配第乙個,不用從頭匹配

import re

ret = re.search(r"\d+", "閱讀次數999")

print(ret.group())

'999' 輸出為字串

findall匹配出符合正則所有的資料,輸出為列表

import re

ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")

print(ret)

['9999', '7890', '12345'] 輸出為列表

sub 將匹配到的資料進行替換 替換新的字串

import re

ret = re.sub(r"\d+", '998', "python = 997")

print(ret)

'998'

split 根據匹配進行切割字串,並返回乙個列表
需求:切割字串「info:xiaozhang 33 shandong」

import re

ret = re.split(r":| ","info:xiaozhang 33 shandong")

print(ret)

['info', 'xiaozhang', '33', 'shandong']

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

非負整數 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正規表示式 編寫正規表示式

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