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