第二篇:正則表達式
阿新 • • 發佈:2017-10-03
utf-8 re模塊 數字 Coding 爬蟲 無限 正則 lfa this
爬蟲需要用到正則,python內置了正則re模塊
#!/usr/bin/env python3.5 # _*_coding:utf-8 _*_ import re #要匹配對象 line = "This is a beautiful woman" #匹配模式,^表示行首, regex_str1 = "^T.*n$" regex_str2 = "^t" if re.match(regex_str1,line): print("以T開頭,以n結尾") if re.match(regex_str2,line): print("以t開頭")
關於貪婪匹配和懶惰匹配:正則默認匹配模式是貪婪匹配模式:
line = "AOOOOAOOOABAlfsdf" regex_str = ".*(A.*A).*" match_obj = re.match(regex_str,line) print(match_obj.group(1))
result:
ABA
上面的例子,這種屬於貪婪匹配,下面引入? 符號就能看出效果了,?屬於懶惰匹配:
line = "AOOOOAOOOABAlfsdf" regex_str = "A.*?A" match_obj = re.match(regex_str,line) print(match_obj.group())
result:
AOOOOA
沒加?的情況:
line = "AOOOOAOOOABAlfsdf" regex_str = "A.*A" match_obj = re.match(regex_str,line) print(match_obj.group()) result: AOOOOAOOOABA
+前面的字符至少出現一次,下面的子字符串‘AA’就不符合要求了:
line = "AOOOOAOOOABAlfAAsdf" regex_str = ".*(A.+A)" match_obj = re.match(regex_str,line) print(match_obj.group(1)) result: AlfAA
大括號,限定次數:
{m}匹配前一個字符m次,{m,n}匹配前一個字符m到n次,省略n則匹配m至無限次,省略m則匹配0至n次
中括號,指定字符:
[abc] 匹配abc中的一個,[^a] 匹配除了a以外的一個字符,[0-9] 匹配0到9中的一個
\s 匹配空白字符 \S 匹配非空白字符
\w 匹配單詞字符 \W 匹配非單詞字符
[\u4E00-\u9FA5] 匹配漢字:
line = "abcad大家下午好" regex_str = ".*?([\u4E00-\u9FA5].*)" match_obj = re.match(regex_str,line) print(match_obj.group(1)) result: 大家下午好
\d 匹配數字
第二篇:正則表達式