正則表達式

一.re模塊

 python提供re模塊,包含全部正則表達式的功能python

二.r前綴

使用r前綴,不用考慮轉義問題正則表達式

如:
s = r'ABC\-001'對象

三.match方法

判斷是否匹配,若是匹配成功,返回一個Match對象,不然返回Noneblog

如:字符串

import re

if re.match(r'\w', 'afefe'):
    print('match')
else:
    print('no')

  

四.切分字符串

若是能夠切分,返回切分後的列表;若是不能,以列表返回原字符串it

import re

print(re.split(r'\s+', 'a     ,b      d'))

輸出:
['a', ',b', 'd']

  

五.分組

提取子串,()表示提取的分組編譯

import re

r = re.match(r'(\d+)-(\d+)', '010-059')
print(r.groups())
print(r.group(1)) #group(0)表示原字符串,1表示第一個匹配到的

  

輸出:
('010', '059')
010class

 

六.貪婪匹配

正則匹配默認是貪婪匹配,也就是匹配儘量多的字符效率

1.貪婪匹配:

import re

r = re.match(r'^(\d+)(0*)$', '010000').groups()
print(r)

  

輸出:
('010000', '')import

 

2.非貪婪匹配:

import re

r = re.match(r'^(\d+?)(0*)$', '010000').groups()
print(r)

  

輸出:
('01', '0000')

 

七.編譯

當咱們在Python中使用正則表達式時,re模塊內部會幹兩件事情:

1.編譯正則表達式,若是正則表達式的字符串自己不合法,會報錯;
2.用編譯後的正則表達式去匹配字符串。

若是一個正則表達式要重複使用幾千次,出於效率的考慮,咱們能夠預編譯該正則表達式,接下來重複使用時就不須要編譯這個步驟了,直接匹配:

import re

re_num = re.compile(r'^(\d+?)(0*)$')
r = re_num.match('010000').groups()
print(r)
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息