天天看點

23 爬蟲 - re 正則 search 方法

search 方法用于查找字元串的任何位置,它也是一次比對,隻要找到了一個比對的結果就傳回,而不是查找所有比對的結果,它的一般使用形式如下:

search(string[, pos[, endpos]])      

其中,string 是待比對的字元串,pos 和 endpos 是可選參數,指定字元串的起始和終點位置,預設值分别是 0 和 len (字元串長度)。

當比對成功時,傳回一個 Match 對象,如果沒有比對上,則傳回 None。

讓我們看看例子:

>>> import re
>>> pattern = re.compile('\d+')
>>> m = pattern.search('one12twothree34four')  # 這裡如果使用 match 方法則不比對
>>> m
<_sre.SRE_Match object at 0x10cc03ac0>
>>> m.group()
'12'
>>> m = pattern.search('one12twothree34four', 10, 30)  # 指定字元串區間
>>> m
<_sre.SRE_Match object at 0x10cc03b28>
>>> m.group()
'34'
>>> m.span()
(13, 15)      

再來看一個例子:

# -*- coding: utf-8 -*-

import re
# 将正規表達式編譯成 Pattern 對象
pattern = re.compile(r'\d+')
# 使用 search() 查找比對的子串,不存在比對的子串時将傳回 None
# 這裡使用 match() 無法成功比對
m = pattern.search('hello 123456 789')
if m:
    # 使用 Match 獲得分組資訊
    print 'matching string:',m.group()
    # 起始位置和結束位置
    print 'position:',m.span()      
matching string: 123456
position: (6, 12)