Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

187
Views
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 4 years ago · Santiago Trujillo
1 answers
Answer question

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 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!