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...