que tienen una cadena de la que quiero extraer 3 grupos:de búsqueda sólo una letra Unicode en Python re
'19 janvier 2012' -> '19', 'janvier', '2012'
Nombre del mes podría contener caracteres no ASCII, por lo [A-Za-z]
no funciona para mí:
>>> import re
>>> re.search(ur'(\d{,2}) ([A-Za-z]+) (\d{4})', u'20 janvier 2012', re.UNICODE).groups()
(u'20', u'janvier', u'2012')
>>> re.search(ur'(\d{,2}) ([A-Za-z]+) (\d{4})', u'20 février 2012', re.UNICODE).groups()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groups'
>>>
que podría utilizar \w
pero coincide con los dígitos y guión:
>>> re.search(ur'(\w+)', u'février', re.UNICODE).groups()
(u'f\xe9vrier',)
>>> re.search(ur'(\w+)', u'fé_q23vrier', re.UNICODE).groups()
(u'f\xe9_q23vrier',)
>>>
He intentado utilizar [:alpha:], pero que no está funcionando:
>>> re.search(ur'[:alpha:]+', u'février', re.UNICODE).groups()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'groups'
>>>
Si de alguna manera podría coincidir \w
sin [_0-9]
, pero no saben cómo. E incluso si descubro cómo hacerlo, ¿hay un atajo listo como [:alpha:]
que funcione en Python?
En cuanto a '[: alpha:]', esto solo funciona dentro de una clase de caracteres, por lo que la expresión regular correcta sería '[[: alpha:]] +', pero Python no los admite de todos modos. –
¿Por qué no simplemente llamar a .split() en la cadena? – yak