2013-05-08 57 views
0

我想從地址字符串中提取艾伯塔省(加拿大)地區的郵政編碼。通過python中的正則表達式提取艾伯塔省(加拿大)郵政編碼

例如:

addr = '12345-67 Ave, Edmonton, AB T1A 2B3, Canada' 

應該提取T1A 2B3

匹配郵政編碼的正則表達式是[T]\d[A-Z] *\d[A-Z]\d。但是,我不知道給定一個完整的地址,我如何才能提取郵政編碼?我想它必須做一些反向引用(),但我無法弄清楚。

如何在Python中實現此目的?

+1

使用捕獲組:'(T \ d [A-Z] \ d [A-Z] \ d)'。反向引用使用捕獲組,但調用'()'反向引用是錯誤的。 – 2013-05-08 21:25:53

+0

@DSM:這是阿爾伯塔郵政編碼(就像我在問題中提到的那樣) – 2013-05-08 21:27:46

+1

@WaqarHameed:你已經倒過來了 - 1A!= A1。 – DSM 2013-05-08 21:28:11

回答

3

僅僅抽取匹配正則表達式的子字符串是很容易的:

test = re.compile(r'[T]\d[A-Z] *\d[A-Z]\d') 
addr = '12345-67 Ave, Edmonton, AB T1A 2B3, Canada' 
test.search(addr).group() 

test.search將返回匹配的對象,其中有各種東西,你可以提取。

相關問題