2014-10-18 33 views
2

我在IDLE,並決定使用正則表達式來整理一個字符串。但是,當我在鍵入的內容網上的教程告訴我,所有會做的就是打印:如何在Python 3中打印正則表達式匹配結果?

<_sre.SRE_Match object at 0x00000000031D7E68> 

全部程序:

import re 
reg = re.compile("[a-z]+8?") 
str = "ccc8" 
print(reg.match(str)) 

結果:

<_sre.SRE_Match object at 0x00000000031D7ED0> 

有誰告訴我如何實際打印結果?

+1

嘗試'print(reg.match(str).group())' – 2014-10-18 09:42:37

回答

7

您需要在match函數後包含.group(),以便打印匹配的字符串,否則僅顯示是否匹配發生。要打印捕獲組捕獲的字符,您需要將相應的組索引傳遞給.group()函數。

>>> import re 
>>> reg = re.compile("[a-z]+8?") 
>>> str = "ccc8" 
>>> print(reg.match(str).group()) 
ccc8 

帶捕獲組的正則表達式。

>>> reg = re.compile("([a-z]+)8?") 
>>> print(reg.match(str).group(1)) 
ccc 

re.match(圖案,字符串標誌= 0)

如果在字符串的開頭的零個或多個字符匹配正則表達式模式,返回一個對應的MatchObject實例。如果字符串與模式不匹配,則返回None;請注意,這與零長度匹配不同。

請注意,即使在MULTILINE模式下,re.match()也只會匹配字符串的開頭,而不是每行的開頭。

相關問題