Python, expresión regular código postal de búsqueda

Estoy tratando de usar expresiones regulares para encontrar un código postal del Reino Unido dentro de una cadena.

Tengo la expresión regular trabajando dentro de RegexBuddy, vea a continuación:

\b[AZ]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}\b 

Tengo un montón de direcciones y quiero capturar el código postal de ellas, ejemplo a continuación:

123 Nombre de alguna carretera
Ciudad, Ciudad
Condado
PA23 6NH

¿Cómo voy a hacer esto en Python? Soy consciente del módulo de re para Python, pero estoy luchando para que funcione.

Aclamaciones

Eef

repitiendo su dirección 3 veces con el código postal PA23 6NH, PA2 6NH y PA2Q 6NH como prueba para su patrón y usando el regex de wikipedia contra el suyo, el código es ..

 import re s="123 Some Road Name\nTown, City\nCounty\nPA23 6NH\n123 Some Road Name\nTown, City"\ "County\nPA2 6NH\n123 Some Road Name\nTown, City\nCounty\nPA2Q 6NH" #custom print re.findall(r'\b[AZ]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}\b', s) #regex from #http://en.wikipedia.orgwikiUK_postcodes#Validation print re.findall(r'[AZ]{1,2}[0-9R][0-9A-Z]? [0-9][AZ]{2}', s) 

el resultado es

 ['PA23 6NH', 'PA2 6NH', 'PA2Q 6NH'] ['PA23 6NH', 'PA2 6NH', 'PA2Q 6NH'] 

Ambos regex dan el mismo resultado.

Tratar

 import re re.findall("[AZ]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}", x) 

No necesitas el \ b.

 #!/usr/bin/env python import re ADDRESS="""123 Some Road Name Town, City County PA23 6NH""" reobj = re.compile(r'(\b[AZ]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2}\b)') matchobj = reobj.search(ADDRESS) if matchobj: print matchobj.group(1) 

Ejemplo de salida:

 [user@host]$ python uk_postcode.py PA23 6NH