number - Coincidencia solo una letra Unicode en Python re
re.split python (1)
Puedes construir una nueva clase de personaje:
[^/W/d_]
en lugar de /w
. Traducido al inglés, significa "cualquier carácter que no sea un carácter no alfanumérico ( [^/W]
es el mismo que /w
), pero tampoco es un dígito y no un guión bajo".
Por lo tanto, solo permitirá letras Unicode (si utiliza la opción de compilación re.UNICODE
).
Tengo una cadena de la que quiero extraer 3 grupos:
''19 janvier 2012'' -> ''19'', ''janvier'', ''2012''
El nombre del mes podría contener caracteres no ASCII, por lo que [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''
>>>
Podría usar /w
pero coincide con los dígitos y el subrayado:
>>> 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'',)
>>>
Intenté usar [:alpha:] , pero no funciona:
>>> 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 pudiera de alguna manera coincidir con /w
sin [_0-9]
, pero no sé cómo. E incluso si descubro cómo hacer esto, ¿hay un atajo listo como [:alpha:]
que funciona en Python?