que tienen un gran conjunto de texto del mundo real que tengo que tirar de palabras fuera de a la entrada en un comprobador de ortografía. Me gustaría extraer tantas palabras significativas como sea posible sin demasiado ruido. Sé que hay muchos ninjas regex por aquí, así que espero que alguien me pueda ayudar.Extracción de palabras completas
Actualmente estoy extraer todas las secuencias alfabéticas con '[a-z]+'
. Esta es una buena aproximación, pero arrastra una gran cantidad de basura con ella.
Idealmente me gustaría un poco de expresiones regulares (no tiene que ser bonita o eficiente) que extrae todas las secuencias alfabéticas delimitadas por separadores de palabras naturales (tales como [/-_,.: ]
etc.), e ignora las secuencias alfabéticas con límites ilegales.
Sin embargo, también estaría feliz de simplemente ser capaz de obtener todas las secuencias alfabéticas que no son adyacentes a un número. Así, por ejemplo 'pie21'
no sería extraer 'pie'
, pero 'http://foo.com'
extraería ['http', 'foo', 'com']
.
me trataron lookahead
y lookbehind
afirmaciones, sino que se aplicaron por carácter (así por ejemplo re.findall('(?<!\d)[a-z]+(?!\d)', 'pie21')
volvería 'pi'
cuando quiero que vuelva nada). Traté de envolver la parte alfa como un término ((?:[a-z]+)
) pero no ayudó.
más detalle: los datos es una base de datos de correo electrónico, por lo que es sobre todo la llanura Inglés con un número normal, pero a veces no hay cadenas de basura como GIHQ4NWL0S5SCGBDD40ZXE5IDP13TYNEA
y AC7A21C0
que me gustaría ignorar por completo. Supongo que cualquier secuencia alfabética con un número es basura.
Mejor uso cadenas sin formato con expresiones regulares. '\ d' funciona, pero otras secuencias de escape fallarán, y esto puede ser difícil de depurar. –