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

153
Views
Javascript Regex coincide con una línea que termina con char ' cuando no está precedida por?

Estoy tratando de crear una expresión regular que coincida con todas las líneas con cierto PREFIJO y la coincidencia debería terminar cuando se encuentre un carácter ' Sin embargo, si hay un ? antes de ' , entonces no debería contarse como el final de la línea. Básicamente el signo de interrogación ? sirve como char de escape.

Esto es lo que he estado usando, pero no funciona para lo que intento hacer: Esta es la expresión regular /SOME_PREFIX+[^']+/

[EDITAR] Este es el texto esperado completo:

you could have something before'SOME_PREFIX foo bar'something in the middle'SOME_PREFIX BAR FOO ?'SHOULD ALSO MATCH'test'

SOME_PREFIX foo bar' <---Debería coincidir 1

SOME_PREFIX BAR FOO ?'SHOULD ALSO MATCH' <--- Debería ser una coincidencia 2, pero esta línea no funciona, ya que solo coincide hasta ?' que es la primera aparición de la '

Para referencia: https://regexr.com/63io9

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Podrías usar, por ejemplo:

 const text = "you could have something before'SOME_PREFIX foo bar'something in the middle'SOME_PREFIX BAR FOO ?'SHOULD ALSO MATCH'test'"; const matches = text.match(/SOME_PREFIX(?:[^'?]+|\?'?)*'/g); console.log(matches);

[^'?]+ coincide con cualquier carácter que no sea un ' o ? , una o más veces, y \?'? significa coincidir con un ? seguido opcionalmente por un ' .

Una construcción de alternancia como (?:x|y) significa intentar hacer coincidir x primero y, si no coincide, intentar hacer coincidir y .

about 4 years ago · Juan Pablo Isaza Report

0

Si se admite un lookbehind en su entorno, puede hacer coincidir SOME_PREFIX y luego hacer coincidir cualquier carácter excepto SOME_PREFIX o un ' y solo hacer coincidir el ' cuando está directamente precedido por ?

 SOME_PREFIX(?:(?!SOME_PREFIX|').)*(?:(?<=\?)'(?:(?!SOME_PREFIX|').)*)*'

Explicación

  • SOME_PREFIX Coincide literalmente
  • (?: Grupo de no captura para repetir como un todo
    • (?!SOME_PREFIX|') negativa para afirmar no SOME_PREFIX o ' directamente a la derecha
    • . Haga coincidir cualquier carácter excepto una nueva línea para no cruzar líneas
  • )* Cerrar el grupo de no captura y opcionalmente repetirlo
  • (?: Grupo de no captura para repetir como un todo
    • (?<=\?)' Match ' solo cuando va precedido directamente por ?
    • (?:(?!SOME_PREFIX|').)* El mismo patrón repetitivo que en la primera parte
  • )* Cerrar el grupo de no captura y opcionalmente repetirlo
  • ' Coincide con una comilla simple

Demostración de expresiones regulares

 const regex = /SOME_PREFIX(?:(?!SOME_PREFIX|').)*(?:(?<=\?)'(?:(?!SOME_PREFIX|').)*)*'/g; const str = "you could have something before'SOME_PREFIX foo bar'something in the middle'SOME_PREFIX BAR FOO ?'SHOULD ALSO MATCH'test'"; console.log(str.match(regex));

about 4 years ago · Juan Pablo Isaza Report

0

Puedes utilizar

 ^(?!.*\?'$)SOME_PREFIX.+'

Vea una demostración en regex101.com .

about 4 years ago · Juan Pablo Isaza 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!