python之正則 一

2022-08-27 00:21:23 字數 2124 閱讀 2850

1.常用正規表示式:

\d:數字[0-9] ,例項:a\dc -> a1c

\d:非數字[^\d],例項:a\dc -> abc

\s:空白字元[《空格》\t\r\n\f\v] 例項:a\sc ->a c

\s:非空白字元[^\s] 例項:a\sc ->abc

\w:單詞字元[a-za-z0-9_] 例項:a\wc ->abc

\w:非單詞字元[^\w]

*:匹配前乙個字元0或無限次; abc* -> ab或abc或abcc

+:匹配前乙個字元1次或無限次 abc+ -> abc或abcc

?:匹配前乙個字元0次或1次 abc? -> ab或者abc

:匹配前乙個字元m次 ab[2]c -> abbc

^:匹配字串開頭,在多行模式中匹配每一行的開頭;

$:匹配字串結尾,在多行模式中匹配每一行的結尾;

\a:僅匹配字串開頭

\z:僅匹配字串結尾

\b:匹配\w和\w之間;

\b:以什麼結尾:一般這樣寫(abc)$

|:它總是先嘗試匹配左邊的表示式,一旦成功則跳過匹配右邊的表示式;

(...):被括起來的表示式將作為分組,從表示式左邊開始每遇到乙個分組的

左括號'(',編號+1

另外,分組表示式作為乙個整體,可以後接數量詞,表示式中的|僅在

該組中有效;

例如:(abc) -> abcabc

a(123|456)c -> a456c

(?p...):分組,除了原有的編號外再指定乙個額外的別名;

(?pabc) -> abcabc

\:引用編號為的分組匹配到的字串.

(\d)abc\1 -> 1abc1或者5abc5

(?p=name):引用別名為的分組匹配到的字串.

(?p\d)abc(?p=id) -> 1abc1或者5abc5

分組:(?p...)省略的部分就是正常的正則匹配,我們把

匹配到的這個整體給賦乙個變數名字name,在後續呼叫的時候,

分組表示式的寫法:(abc)edcrfv.*(wsx).*\1

2.編譯正規表示式

r表示raw的簡及raw string 意思是原生字元,也就是說這個字串中間的特殊字元不用轉義;

比如你要表示'\n',可以這樣:r'\n'

但是,如果你不用原生字元,而是用字串你得這樣:'\\n'

shell 中:grep -e或egrep

re.compile(pattern[,flags])

這個方法就是將字串的正規表示式編譯成正則物件,第二個引數flag是匹配

模式,取值可以使用按位或者運算子"|"表示同時生效,比如re.l | re.m,

flag的可選值有:

re.l(re.lgnorecase):忽略大小寫(括號內是完整寫法,下同)

m(multiline):多行模式,改變'^'和'$'的行為;

s(dotall):點任意匹配模式,改變'.'的行為;

l(locale):使預定義字元類\w \w \b \b \s \s取決於當前區域設定;

u(unicode):使預定義字元類\w \w \b \b \s \s \d \d 取決於unicode定義的字元屬性.

x(verbose):詳細模式。這個模式下正規表示式可以是多行,忽略空白符,並

可以加入注釋。以下兩個正規表示式是等價的:

a = re.compile(r"""\d+ #the integralpart

\. #the decimal point

\d * # some fractional digits""",re.x)

b = re.compile(r"\d+\.\d")

1.正則匹配是,優先編譯成正則物件,然後再進行匹配,

3.re正則物件和正則匹配效率比較

re模組是python中處理正規表示式的乙個模組,通過re模組的方法,把正規表示式pattern

編譯成正則物件,以便使用正則物件的方法.那為什麼要使用re模組來把正規表示式

搞成正則物件呢,最主要的是可以提高**的執行效率,正則物件比正則匹配快好多;

Python學習之正則

python學習目錄 在mac下使用python3 python學習之資料型別 python學習之函式 python學習之高階特性 python學習之函式式程式設計 python學習之模組 python學習之物件導向程式設計 python學習之物件導向高階程式設計 python學習之錯誤除錯和測試 ...

python正則入門 一

假設某一行字串為 str1 445 x 1 findall 獲取匹配到的內容 獲取這一行中的數字,python 如下 親測可用 coding utf 8 import re line str1 445 x list re.findall r str1 d line print list 0 列印找到...

Python 每日正則(一)

import re 1.以 h 開頭 line huang123 match res re.match huang123 line if match res print 匹配成功 else print 匹配失敗 match res re.match huang line if match res p...