Estoy tratando de extraer símbolos bursátiles de un cuerpo de texto. Estos partidos generalmente vienen en las siguientes formas:
(<symbol>) => (VOO)
(<market>:<symbol>) => (NASDAQ:C)
En los casos de muestra que se muestran arriba, me gustaría hacer coincidir VOO y C, omitiendo todo lo demás. Esta expresión regular me lleva a la mitad del camino:
(?<=\()(.*?)(?=\))
Con esto, coincido con lo que está incluido entre paréntesis, pero la lógica que ignora el "ruido" NASDAQ:me elude. Me encantaría aprender a especificar condicionalmente este patrón/lógica.
¿Algunas ideas? ¡Gracias!
Solución del problema
Puedes usar
[A-Z]+(?=\))
Vea la demostración de expresiones regulares.
Detalles:
[A-Z]+- una o más letras ASCII mayúsculas(?=\))- una anticipación positiva que coincide con una ubicación seguida inmediatamente por un)carácter.
Alternativamente, puede usar lo siguiente para capturar los valores en el Grupo 1:
\((?:[^():]*:)?([A-Z]+)\)
Vea esta demostración de expresiones regulares. Detalles:
\(- un(char(?:[^():]*:)?- una secuencia opcional de cero o más caracteres que no sean(,)y:luego un:carácter([A-Z]+)- Grupo 1: una o más letras ASCII mayúsculas\)- un)char.
No hay comentarios:
Publicar un comentario