Atascado con el siguiente problema:
Tengo una cadena 'ABC.123.456XX' y quiero usar expresiones regulares para extraer los 3 caracteres numéricos que vienen después del segundo período. Realmente estoy luchando con esto y agradecería cualquier idea nueva, esto es lo más cercano que tengo, pero no está realmente cerca de lo que quiero:
'.*\.(.*?\.\d{3})'
Agradezco cualquier ayuda por adelantado, gracias.
3 respuestas
Esta expresión también podría funcionar bien:
[^\r\n.]+\.[^\r\n.]+\.([0-9]{3})
Prueba
import re
regex = r'[^\r\n.]+\.[^\r\n.]+\.([0-9]{3})'
string = '''
ABC.123.456XX
ABCOUOU.123123123.000871XX
ABCanything_else.123123123.111871XX
'''
print(re.findall(regex, string))
Salida
['456', '000', '111']
Si desea simplificar / modificar / explorar la expresión, se explica en el panel superior derecho de regex101. com. Si lo desea, también puede ver en este enlace, cómo coincidiría contra algunas entradas de muestra.
Si su entrada siempre estará en un formato similar, como xxx.xxx.xxxxx
, entonces una solución es la manipulación de cadenas:
>>> s = 'ABC.123.456XX'
>>> '.'.join(s.split('.')[2:])[0:3]
Explicación
En la línea '.'.join(s.split('.')[2:])[0:3]
:
s.split('.')
divide la cadena en la lista['ABC', '123', '456XX']
'.'.join(s.split('.')[2:])
se une al resto de la lista después del segundo elemento, por lo que'456XX'
[0:3]
selecciona la subcadena del índice 0 al índice 2 (inclusive), por lo que el resultado es456
Dot, no Dot dos veces, luego siguen los 3 dígitos en el grupo de captura 1
[^.]*(?:\.[^.]*){2}(\d{3})
https://regex101.com/r/qWpfHx/1
Expandida
[^.]*
(?: \. [^.]* ){2}
( \d{3} ) # (1)
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.