expresión regular de Python con "O" y $ al final de la línea

Tengo 3 tipos diferentes de cuerdas en las que estoy tratando de hacer coincidir un patrón: Patrones:

  1. abcdedf_abc_abc_XS123456789_1234567
  2. abcdedf_abc_abc_AB_1234567_2014/03/17
  3. abcdef_abcdf_abc_xyz_12354AB12_1234567

En cada caso, estoy atando para que coincida con '1234567'

El código que he probado es:

m = re.search(r'_[0-9]+_|$',string)
m = re.search(r'_[0-9]+[_]|$',string)

Ninguno parece estar dándome los resultados que quiero.

Desde http://docs.python.org/2/howto/regex.html He leído que:

"Alternancia, o el operador "o". Si A y B son expresiones regulares, A|B coincidirá con cualquier cadena que coincida con A o B. | tiene una precedencia muy baja para que funcione razonablemente cuando se alternan múltiples -cadenas de caracteres. Crow|Servo coincidirá con Crow o Servo, no Cro, una 'w' o una 'S', y ervo".

A y B deben ser expresiones regulares. Supongo que $ no es una expresión regular.

preguntado el 14 de febrero de 14 a las 01:02

Estoy confundido por la pregunta. Parece que el código está buscando '_[0-9]+_|$' y no '123457'. -

El resultado final que estoy buscando es 1234567. Estoy usando el _ al comienzo del patrón b/c cada vez que hay un 1234567, está precedido por un _. Así que quito el _ después de encontrar una coincidencia. -

parece que @thefourtheye lo respondió. Pero usó una versión anterior de python. Es posible que deba usar paréntesis para imprimir :-) -

1 Respuestas

strings = [
"abcdedf_abc_abc_XS123456789_1234567",
"abcdedf_abc_abc_AB_1234567_2014/03/17",
"abcdef_abcdf_abc_xyz_12354AB12_1234567"
]

import re
pattern = re.compile(r"(?<=_)\d+(?=_|$)")
for item in strings:
    print pattern.search(item).group()

Salida

1234567
1234567
1234567

Visualización de expresiones regulares

Demostración de Debuggex

Respondido 14 Feb 14, 01:02

@WongSifu Incluí la demostración de Debuggex en mi respuesta. Por favor, compruebe eso. Si tiene alguna pregunta, por favor comente aquí :) - los cuatro ojos

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.