正則表達式提取數據


1. 什么是正則表達式

用事先定義好的一些特定字符、及這些特定字符的組合,組成一個規則字符串,這個規則字符串用來表達對字符串的一種過濾邏輯.

2. 正則表達式的常見語法

試試下面正則的結果,注意. 不能匹配\n
string_a = '<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\n\t\t<meta http-equiv="content-type" content="text/html;charset=utf-8">\n\t\t<meta content="always" name="referrer">\n <meta name="theme-color" content="#2932e1">' ret = re.findall("<.*>",string_a) print(ret)

3.re模塊的常見方法

re.match(從頭找一個)

re.search(從整個字符串找,找出一個)

re.findall(找出所有的,返回一個列表)

re.sub(替換) 第一個參數是要替換的字符串,第二個是替換后的字符串,第三個是整個字符串

re.compile(編譯)

返回一個模型P,具有和re一樣的方法,但是傳遞的參數不同,匹配模式需要傳到compile中.

p = re.compile("\d",re.S) 
p.findall("python111")
re.S 和re.DOTALL表示匹配換行,re>I 表示忽略大小寫

4. python中原始字符串r的用法

原始字符串定義(raw string):所有的字符串都是直接按照字面的意思來使用,沒有轉義特殊或不能打印的字符,原始字符串往往針對特殊字符而言。例如"\n"的原始字符串就是"\\n".

總結:正則中使用原始字符串r能夠忽略轉義符號帶來的影響,加上原始字符串r之后,待匹配的字符串中有多少個\,正則中就添加多少個\即可.

windows中原始字符串r的使用,由於windows中的路徑用\表示,但是在正則表達式中,\表示轉義,如果不用r,正則會試圖將它轉義,這樣就會標錯.

重點: re.findall(r“a.*bc”,”a\nbc”,re.DOTALL)re.findall(r“a(.*)bc”,”a\nbc”,re.DOTALL)的區別?

不分組時匹配的是全部,分組后匹配的是組內的內容.

 

re模塊匹配分組

split 根據匹配進行切割字符串,並返回一個列表

#coding=utf-8 import re ret = re.split(r":| ","info:xiaoZhang 33 shandong") print(ret)

注意點 :
匹配出<html>hh</html> ret = re.match(r"<([a-zA-Z]*)>\w*</\1>", "<html>hh</html>")

匹配出<html><h1>www.Python.cn</h1></html> ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>", label)

匹配出<html><h1>www.python.cn</h1></html>
ret = re.match(r"<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>", "<html><h1>python</h1></html>")

注意:(?P<name>)(?P=name)中的字母p大寫

 

 


 

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM