實現(xiàn)方式包括 2種
1 re是一個引用模塊,類似與其他的模塊的使用,可以直接進行調(diào)取模塊中的功能函數(shù)使用。
例如:
print re.split(r'\d+','one1two2three3four4')
得到的結(jié)果:
['one', 'two', 'three', 'four', '']
split語法:
split(string[, maxsplit]) | re.split(pattern, string[, maxsplit]):
按照能夠匹配的子串將string分割后返回列表。maxsplit用于指定最大分割次數(shù),不指定將全部分割。
此處使用的是第二種語法結(jié)構(gòu):re.split(pattern, string[, maxsplit])
說明:pattern 匹配的正則表達(dá)式
string 要匹配的字符串。
flags 標(biāo)志位,用于控制正則表達(dá)式的匹配方式,如:是否區(qū)分大小寫,多行匹配等等。
正則表達(dá)式中r 表示的是Python 代碼中的 Raw 字符串,在字符串前加個 “r” 反斜杠就不會被任何特殊方式處理,所以 r”\n” 就是包含”\” 和 “n” 的兩個字符,而 “\n” 則是一個字符,表示一個換行。
如何使用第一種語法?
這就是利用re模塊提供的正則表達(dá)式對象,即第2種方法
2 使用compile 函數(shù)生成一個正則表達(dá)式對象。該對象能夠通過一些方法(函數(shù))進行正則表示式處理操作。
具體流程可類似如下所示(來源于網(wǎng)上,當(dāng)然含包括除匹配之外的類似搜索,替換等處理):
因此對于 1 中的實例,還可以通過一下方法進行實現(xiàn):
p = re.compile(r'\d+')print p.split('one1two2three3four4')
第一行是將正則表達(dá)式編譯為Pattern對象
第二行是調(diào)用對象的方法
所以,在使用python的正則表達(dá)式時,可以采取以上任意一種方法。當(dāng)然,第二種方式可以重復(fù)使用,靈活性大。
說明:由于此處只介紹python正則表達(dá)式的使用思路,所以更多有關(guān)的,具體的語法,語句可以參考相關(guān)材料。
此處簡單實現(xiàn)爬蟲實例,主要簡述思路:包括,抓取網(wǎng)頁,數(shù)據(jù)獲取。
import reimport urllibdef getHtml(url): page=urllib.urlopen(url) html=page.read() return htmldef getImg(html): reg=r'src="(.+?\.jpg)"' imgre=re.compile(reg) imglist=re.findall(imgre,html) return imglisthtml=getHtml("http://tieba.baidu.com/p/2460150866")print(getImg(html))
此源碼來源 http://www.cnblogs.com/fnng/p/3576154.html
分別使用到獲取url的庫urllib以及正則表達(dá)式模塊。正則表達(dá)式使用的是第二種語法結(jié)構(gòu)。
說明: 以上使用的是python2.7。
還有一個獲取url的庫urllib2,但在python3.x中兩者合并為 urllib。所以導(dǎo)入模塊改為:
import urllibimport urllib.request
上述程序中的urllib應(yīng)該改為
urllib.request
(現(xiàn)在有更高版本的urllib,進一步簡化了程序語句)
以上程序抓取的結(jié)果是一些圖片的鏈接。