本文講述了python實現的正則表達式功能。分享給大家供大家參考,具體如下:
前文:
首先,什么叫正則表達式(Regular Expression)?
例如我們要判斷字符串"adi_e32fv,Ls"里面是否含有子串"e32f",又例如我們在一個含百萬個姓名的txt文件中找姓“王”,名字以“五”結尾的名字,然后打印出來。結果為:“王五”、“王小五”、“王大五”、“王小小五”……
以前我們是使用字符串函數來查找的,但是代碼實現起來會很復雜。如今用正則表達式只需要一句 re.findall('王.*?五',txt1) 就可以了!正則表達式是寫網絡爬蟲的最基本的知識,可以用正則表達式在html中搜集滿足某些字串要求的網址。下面是個人對正則表達式基礎知識的一些總結。
(操作環境:32位Win8系統,運行工具:python2.7.9+Eclipse.)
正文:
1、首先要導入python的re模塊。
2、元字符 . ^ $ * + ? {} [] / | ()
re模塊中的findall(str1,str2)方法返回字串str2中匹配str1格式的字串。例如在字符串'dit dot det,dct dit dot'中匹配'dit'結果為:
str1 = 'dit dot det,dct dit dot'print re.findall('dit',str1)結果:
['dit', 'dit']
|作用:'dit|dct'表示dit或者dct。
str1 = 'dit dot det,dct dit dot'print re.findall('dit|dct',str1)結果:
['dit', 'dct', 'dit']
[]作用:[ic]表示i或c,例如'd[ic]t'表示dit和dct兩者,和'dit|dct'等價:
str1 = 'dit dot det,dct dit dot'print re.findall('d[ic]t',str1)結果:
['dit', 'dct', 'dit']
^作用一:[^ic]中^表示否定,即除了i和c:
str1 = 'dit dot det,dct dit dot'print re.findall('d[^ic]t',str1)結果:
['dot', 'det', 'dot']
^作用二:^dit表示子串dit在開頭位置,而dct不是在開頭:
str1 = 'dit dot det,dct dit dot'print re.findall('^dit',str1)print re.findall('^dct',str1)結果:
['dit'][]
$作用:dot$表示子串dot要在末尾位置,而dct不是在末尾:
str1 = 'dit dot det,dct dit dot'print re.findall('dot$',str1)print re.findall('dct$',str1)結果:
['dot'][]
.作用:d.t表示d與t之間省略了一個任意字符:
str1 = 'dit dot det,dct dit dot'print re.findall('d.t',str1)結果:
['dit', 'dot', 'det', 'dct', 'dit', 'dot']
+作用:di+t表示d與t之間省略了一個或多個'i':
str1 = 'd dt dit diit det'print re.findall('d.+t',str1)            
新聞熱點
疑難解答