Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

200
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda