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

250
Visualizações
Regex: ¿cómo hacer coincidir una sintaxis particular cuando no incluye esa sintaxis particular, una sola línea?

Tengo una sintaxis particular que uso en cadenas que me ayuda a recuperar e insertar subcadenas. un ejemplo:

 {{ variable ||| <div>example text</div>}}

Ahora me encuentro teniendo algo como:

 {{ variable1 ||| <div>some text</div> <ul> {{ variable2 |||<li>some other text<li/>}} {{ variable3 |||<li>even more text<li/>}} </ul> }}

y obviamente la expresión regular que uso para el primer caso no coincide correctamente.

la expresión regular que suelo usar es:

 /\B\{\{(.*?)\|\|\|(.*?)\}\}/

que en el segundo ejemplo coincide con:

 {{ variable1 ||| <div>some text</div> <ul> {{ variable2 |||<li>some other text<li/>}}

que no es lo que quiero.

Necesito una expresión regular para que coincida con esa sintaxis en particular cuando no contiene esa sintaxis en particular. He probado muchas combinaciones similares a esta:

 \B\{\{(.*?)\|\|\|(.*(?!\{\{.*?\|\|\|.*?\}\}).*)\}\}

pero no puedo resolverlo. Sería suficiente para obtener sólo

 {{ variable2 |||<li>some other text<li/>}}

Porque después de la coincidencia puedo eliminar esa sintaxis para que al verificar recursivamente pueda hacer coincidir todo.

La dificultad que tengo es que la cadena que analizo está solo en una línea, por lo que no puedo usar nada como

 ^(?!example).*$

¿Tengo razón? ¿Qué me estoy perdiendo? No pude encontrar una solución en otras preguntas, así que escribí esto; lo siento si esto es un duplicado.

Muchísimas gracias

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El problema que tiene aquí es que está comenzando a superar lo que puede lograr de manera útil * con una expresión regular: tal como van las cosas ahora, parece que tarde o temprano llegará a algo como:

 {{ variable1 ||| <div>some text</div> <ul> {{ variable2 |||<li>some other text<li/>}} {{ variable3 |||<li>even more text <ul> <li>text always here</li> {{ variable4 ||| <li>optional text</li>}} </ul> <li/>}} </ul> }}

En este tipo de situación, ha pasado el punto en el que tiene una sustitución de texto conveniente y está creando su propio lenguaje de marcado y sistema de plantillas. Una vez que sepa que es lo que está haciendo, no es demasiado difícil, pero definitivamente es una tarea más pesada: querrá analizar su texto en un árbol (regexes puede ser muy útil para esto) y luego usar sus variables para decidir qué nodos mostrar.

Lo que debe pensar si llega a este punto es si es mejor usar su propio marcado para esto, o si existe una herramienta que ya puede manejar lo que necesita con cambios mínimos en sus documentos existentes. Hay varios motores de plantillas disponibles en JavaScript (creo que Moustache y Handlebars son los más conocidos, pero vale la pena echarle un vistazo a herramientas como JSRender ) y es muy posible que algo ya se ajuste a sus necesidades.


* Cuando digo útil , lo que quiero decir es que más allá de cierto punto, si puede resolver un problema con Regex, tiende a volverse engorroso y difícil de mantener. Las expresiones regulares son excelentes herramientas para operaciones de texto simples, pero si se vuelven demasiado grandes o complicadas, puede ser muy difícil solucionarlas.

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