正規表示式在字串匹配中起到巨大的作用。
幾個資料提取工具對比:
這裡可以看到雖然正規表示式上手比較難,但是它幾乎是最通用速度最快最靈活的字串分析工具。
本文只是介紹如何在python中使用正規表示式,如何去寫正規表示式的式子不是一篇部落格說得清的。
1. 首先如何任何正規表示式使用的基礎都是編譯正規表示式的表示式生成正規表示式物件。
下面**表示字串中找到數字串
import re
p = re.compile(r'\d+')
print(type(p))
2. match(str,a,b)匹配字串中符合條件的結果,a表示起始位置下標,b表示結束位置下標,只會在a,b之間查詢
注意:match的結果是乙個match物件,且得到的是第乙個查詢到的值。
import re
p = re.compile(r'\d+')
m = p.match("123nzcisbnkld45jh78")
print(type(m))
print(m)
<_sre.sre_match object; span=(0, 3), match='123'>
下面是match物件的一些常用方法。
import re
p = re.compile(r'\d+')
m = p.match("123nzcisbnkld45kl67")
# 匹配到的match物件的文字值
print(m[0])
# 匹配到的match物件在源字串中的下標起始位置
print(m.start(0))
# 匹配到的match物件在源字串中的下標結束位置
print(m.end(0))
123
03
注意:search方法和match類似,返回乙個match物件。
3. findall(str,a,b)引數含義和match完全一致
import re
p = re.compile(r'\d+')
rst = p.findall("one12two34three567")
print(rst)
['12', '34', '567']
可以看到返回的是乙個匹配到的所有結果字串組成的列表。個人覺得這種方法會比較常用,例如使用爬蟲時下面的配合replace等處理使用(下面**包含html中查詢指定標籤的寫法)。
import re
html = '''138
8.2.20
01.1010
1.33
:8173
'''# 匹配p標籤的一種寫法,其他標籤可以類似修改
p =re.compile(r'[^<]*?
')lll = p.findall(html)
print(lll)
for item in lll:
print(item)
html.replace(item, "")
["8
", ".2
", "0
", "10"]8
.2010
python 正規表示式語法
import re 1.驗證手機號碼 手機號碼的規則是以1開頭,第二位可以是34587,後面那9位就可以隨意了 text 15895775470 ret re.match 1 34587 d text print ret.group text 1530385801139866 126.cn ret ...
正規表示式語法
jscript 8.0 正規表示式語法 正規表示式是一種文字模式,包括普通字元 例如,a 到 z 之間的字母 和特殊字元 稱為 元字元 模式描述在搜尋文字時要匹配的乙個或多個字串。表示式 匹配 s 匹配空行。d d 驗證由兩位數字 乙個連字元再加 5 位數字組成的 id 號。s s 匹配 html ...
正規表示式語法
下面是正規表示式的一些示例 表示式 匹配 s 匹配空行。例如,abc 匹配 plain 中的 a 向字符集。匹配未包含的任何字元。例如,abc 匹配 plain 中的 p cx 匹配由 x 指示的控制字元。正規表示式是一種文字模式,包括普通字元 例如,a 到 z 之間的字母 和特殊字元 稱為 元字元...