• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

152
Vistas
Extraiga múltiples cadenas de una cadena larga de manera eficiente en Javascript

Estoy tratando de extraer varias cadenas usando diferentes patrones de una cadena larga. Lo he hecho con éxito usando diferentes consultas Regex, pero creo que esto no es muy eficiente. Aquí hay un ejemplo de la cadena de entrada:

const input = ....Número de estudiantes: 5...[Nuevo]Descanso a la 1:45 p.m.\nLos estudiantes involucrados son: John, Joseph, Maria\nAlmuerzo a las 2:00 p.m....Actividades restantes: salto de longitud, barajar..

Hay tres prefijos que se utilizan para extraer los datos después:
const prefix1 = Students involved are:
const prefix2 = Activities remaining:
const prefix3 = Number of students:

El único patrón es una nueva línea después de cada una de las tres cadenas anteriores. Ejemplo: Students involved are: John, Joseph, Maria\n

He usado la siguiente expresión regular para lograr esto:

const students = input.match(new RegExp(prefix1 + "(.*)"));
const activities = input.match(new RegExp(prefix2 + "(.*)"));
const numOfStudents = input.match(new RegExp(prefix3 + "(.*)"));

¿Hay una manera mejor y más eficiente de lograr lo anterior donde tengo que iterar a través de la cadena larga solo una vez?

about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede combinar las tres expresiones regulares en una, así: (?<=Number of students: )(?<number>[^\n]+).*?(?<=Students involved are: )(?<students>[^\n]+).*?(?<=Activities remaining: )(?<activities>[^\n]+)/gms

Luego, al usar grupos de captura, puede acceder a los tres valores que desee.

 let s = `const input = ....Number of students: 5... at 1:45 pm Students involved are: John, Joseph, Maria Lunch at 2:00 pm...Activities remaining: long jump, shuffle..` let pattern = /(?<=Number of students: )(?<number>[^\n]+).*?(?<=Students involved are: )(?<students>[^\n]+).*?(?<=Activities remaining: )(?<activities>[^\n]+)/gms let m = pattern.exec(s) console.log(m.groups.students) console.log(m.groups.number) console.log(m.groups.activities)

Dado que no hay un patrón que no sea una nueva línea después de cada una de las líneas mencionadas, esto coincidirá con cualquier cosa hasta la nueva línea, por lo que deberá limpiar los valores coincidentes.

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda