1.python常用正規表示式
需要格外解釋的是分組,(?p…)省略的部分就是正常的正則匹配,我們把匹配到的這個整體給賦乙個變數名字
name
,在後續呼叫的時候,就方便多了,後面我們還會介紹。
2.正則物件和正則匹配效率比較
re模組,通過re模組的方法,把正規表示式
pattern
編譯成正則物件,以便使用正則物件的方法。那為什麼要使用
re模組來把正規表示式搞成正則物件呢,最主要的是可以提高**的執行效率。
比如:
import timeit
print timeit.timeit(setup='''import re; reg = re.compile('.*')''', stmt='''reg.match('')''', number=1000000)
print timeit.timeit(setup='''import re''', stmt='''re.match('.*', '')''', number=1000000)
結果為:
0.330698045532
0.840902419152
解釋:timeit.timeit是用來統計程式執行的時間的,和明顯第乙個
的執行時間要比第二個的執行時間快好多,這個就是把正則表達是表示成正則物件最明顯的好處。下面我們就可以看看如何把正規表示式轉換成正則物件
## 正規表示式 r 的含義
r表示raw
的簡及raw string
意思是原生字元,也就是說是這個字串中間的特殊字元不用轉義
比如你要表示『\n』,
可以這樣:
r'\n'
但是如果你不用原生字元
而是用字串你得這樣:『\\n』
3.編譯正則物件
import re
reg = re.compile(r'abc.*')
print(type(reg))
print(reg)
結果:
#正則物件
<_sre.sre_pattern object at>
這個方法是就是將字串的正規表示式編譯城正則物件,第二個引數flag是匹配模式,取值可以使用按位或者運算子「
|」表示同時生效,比如:
re.i | re.m
,flag
的可選值有:
re.i(re.ignorecase): 忽略大小寫(括號內是完整寫法,下同)
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 integral part
\. # the decimal point
\d * # some fractional digits""", re.x)
b = re.compile(r"\d+\.\d*")
python正規表示式元字元 正規表示式
字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
python正規表示式及使用正規表示式的例子
正規表示式 正則表達用來匹配字串 正規表示式匹配過程 正規表示式語法規則 匹配除換行 n 外的任意字串 abcabc 轉義字元,使後乙個字元改變原來的意思 a c a c 字符集,對應的位置可以是字符集中任意字元,字符集中的字元可以逐個列出,也可以給出範圍,如 abc 或 a c 第乙個字元如果是 ...
Python 正規表示式
1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...