online number example python regex unicode character-properties

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?