online - re.search python examples




python-re: ¿Cómo puedo unir un personaje alfa (2)

Puede usar una de las siguientes expresiones para hacer coincidir una sola letra:

(?![\d_])\w

o

\w(?<![\d_])

Aquí coincido para \w , pero compruebe que [\d_] no coincida antes / después de eso.

De los documentos:

(?!...)
Matches if ... doesn’t match next. This is a negative lookahead assertion. For example, Isaac (?!Asimov) will match 'Isaac ' only if it’s not followed by 'Asimov'.

(?<!...)
Matches if the current position in the string is not preceded by a match for .... This is called a negative lookbehind assertion. Similar to positive lookbehind assertions, the contained pattern must only match strings of some fixed length and shouldn’t contain group references. Patterns which start with negative lookbehind assertions may match at the beginning of the string being searched.

¿Cómo puedo unir un personaje alfa con una expresión regular? Quiero un personaje que está en \w pero no está en \d . Lo quiero compatible con Unicode por eso no puedo usar [a-zA-Z] .


Qué pasa:

\p{L}

Puede utilizar este documento como referencia: Expresiones regulares Unicode

EDITAR: Parece que Python no maneja expresiones Unicode . Eche un vistazo a este enlace: Manejo de caracteres acentuados con expresiones regulares de Python - [AZ] simplemente no es lo suficientemente bueno (ya no está activo, enlace al archivo de internet)

Otras referencias:

Para la posteridad, aquí están los ejemplos en el blog:

import re
string = 'riché'
print string
riché

richre = re.compile('([A-z]+)')
match = richre.match(string)
print match.groups()
('rich',)

richre = re.compile('(\w+)',re.LOCALE)
match = richre.match(string)
print match.groups()
('rich',)

richre = re.compile('([é\w]+)')
match = richre.match(string)
print match.groups()
('rich\xe9',)

richre = re.compile('([\xe9\w]+)')
match = richre.match(string)
print match.groups()
('rich\xe9',)

richre = re.compile('([\xe9-\xf8\w]+)')
match = richre.match(string)
print match.groups()
('rich\xe9',)

string = 'richéñ'
match = richre.match(string)
print match.groups()
('rich\xe9\xf1',)

richre = re.compile('([\u00E9-\u00F8\w]+)')
print match.groups()
('rich\xe9\xf1',)

matched = match.group(1)
print matched
richéñ






regex-negation