Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

199
Vistas
Regex para coincidir con el carácter a menos que esté precedido por un número impar de otro carácter específico

Otra forma de plantear mi problema es hacer coincidir un carácter siempre que esté precedido por un número par (0, 2, 4, ...) de otro carácter específico.

En mi caso, quiero hacer coincidir todos los caracteres ' en la cadena a menos que esté precedido por un número impar (1, 3, 5 ...) de ?

ejemplo:

 - ?' => shouldn't match (preceded by one ?) - ??' => Should match (preceded by 2 ?) - ?????' => Shouldn't match (preceded by 5 ?)

Consideremos este escenario:

Tenemos esta cadena: ' ??' ????' ?' ??????' entonces la expresión regular debe coincidir con todos los caracteres ' en este caso, excepto el cuarto, por lo que, por ejemplo, si quiero usar String.split (regex), el resultado sería ['', '??', '????' , ?' '??????']

Actualmente estaba usando esta expresión regular: (?<!\?)' , pero el problema es que solo coincide si no hay ? antes '

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede usar esta expresión regular con una condición de mirar atrás:

 (?<=([^?]|^)(?:\?\?)*)'

Demostración RegEx

Explicación RegEx

  • (?<= : Iniciar la condición de mirar atrás
    • ([^?]|^) : Coincide con un no- ? personaje o inicio
    • (?:\?\?)* : Coincide con 0 o más pares de ?
  • ) : Fin de la condición de mirar atrás
  • ' : Coincide con un '
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puedes usar

 /(?<=(?<!\?)(?:\?\?)*)'/g

Vea la demostración de expresiones regulares . Detalles :

  • (?<=(?<!\?)(?:\?\?)*) - una mirada positiva hacia atrás que coincide con una ubicación precedida por cero o más apariciones de double ? no precedido inmediatamente por otro ?
  • ' - un ' carácter.

Código de muestra:

 const texts = ["The ?' should not match","The ??' should match","?????' => The ?????' should not match"]; const rx = /(?<=(?<!\?)(?:\?\?)*)'/g for (var text of texts) { console.log(text, '=>', rx.test(text)); }

Si necesita reemplazar, es posible con

 const texts = ["The ?' should not match","The ??' should match","?????' => The ?????' should not match"]; const rx = /(?<=(?<!\?)(?:\?\?)*)'/g for (var text of texts) { console.log(text, '=>', text.replace(rx, '<MATCH>$&</MATCH>')); }

about 4 years ago · Juan Pablo Isaza 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda