1. 程式人生 > >python re 裡面match 和search的區別

python re 裡面match 和search的區別

re.match()從開頭開始匹配string。
re.search()從anywhere 來匹配string。

例子:

>>> re.match("c", "abcdef")  # No match
>>> re.search("c", "abcdef") # Match
<_sre.SRE_Match object at ...>

可以加個’^’來強制search從開頭開始匹配。

>>> re.match("c", "abcdef")  # No match
>>> re.search("^c"
, "abcdef") # No match >>> re.search("^a", "abcdef") # Match <_sre.SRE_Match object at ...>

MULTILINE 多行模式下,match也只匹配string的開頭部分,而用了’^’正則的re.search()可以匹配多行。

>>> re.match('X', 'A\nB\nX', re.MULTILINE)  # No match
>>> re.search('^X', 'A\nB\nX', re.MULTILINE)  # Match
<_sre.SRE_Match object at ...>

re.match() ,re.search()都返回re.MatchObject ,他常用的方法就是group() ,groups(),span()

另外在補充一個search的基本用法:

for process in res:
    # print process
    if re.search('java', process):
        print process