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

257
Visualizações
coincidencia de omisión de expresión regular si sigue un espacio en blanco y una palabra clave

Actualmente intento hacer coincidir los comentarios con expresiones regulares, pero solo si no sigue ninguna función. Actualmente uso una expresión regular que también coincide con la función de palabra clave. Y luego verifique en el código fuente (php) si este grupo está configurado o no.

 /\/\*\*.*?\*\/\s*(function)?/sg

https://regex101.com/r/l0j1ip/1

Ahora la pregunta es si es posible darse cuenta con expresiones regulares puras. Lo he intentado con una simple mirada hacia adelante negativa pero sin éxito. Aunque el comentario ya no se hace individualmente, sino solo con el comentario posterior.

 /\/\*\*.*?\*\/\s*(?!function)/sg

https://regex101.com/r/PuUUw6/1

Luego probé el grupo sin captura. Pero también allí sin éxito.

 /(?:\/\*\*.*?\*\/\s*function)|\/\*\*.*?\*\/\s*/sg

https://regex101.com/r/wkQE7E/1

Después de un comentario con la información (*SKIP)(*FAIL) también lo probé sin éxito. Se omiten todas las coincidencias por encima de esta palabra clave. También se saltan los partidos individuales.

 /\/\*\*.*?\*\/\s*function(*SKIP)(*FAIL)|\/\*\*.*?\*\//sg

https://regex101.com/r/OJSFrF/1

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Después de leer la pregunta nuevamente, debería ser factible usando una búsqueda anticipada negativa; la repetición debe estar dentro de la expresión negativa:

 /\/\*\*((?!\*\/).)*\*\/(?!\s*function)/sg

Parece que necesita comprender mejor cómo funciona el retroceso, utilizando .*? en lugar de .* significa que el motor de expresiones regulares intentará primero hacer coincidir todo después de antes de .* sin embargo, la búsqueda negativa hacia adelante hace que la coincidencia falle y .* continúa coincidiendo. Usar ((?!\*\/).)* no puede coincidir con \*\/ mientras que .*? puede, después de retroceder. Otra solución es usar el grupo atómico (?>\/\*\*.*?\*\/)(?!\s*function) .

over 4 years ago · Santiago Trujillo Relatório

0

Otra opción sin el indicador /s podría ser

 /\*\*(?:[^*]*+|\*(?!/)[^*]*+)*\*/(?!\s*function)

El patrón coincide:

  • /\*\* Partido /**
  • (?: grupo de no captura
    • [^*]*+ Coincide con cualquier carácter excepto * usando un cuantificador posesivo
    • | O
    • \*(?!/) Partido * no seguido de /
    • [^*]*+ Coincide con cualquier carácter excepto * usando un cuantificador posesivo
  • )* Cerrar el grupo de no captura y, opcionalmente, repetir
  • \*/ Partido */
  • (?!\s*function) Negative lookahead, afirmar caracteres de espacio en blanco no opcionales seguidos de la función a la derecha

Demostración de expresiones regulares

Tenga en cuenta que no tiene que escapar de la barra invertida cuando usa un delimitador diferente.

 $regex = '~/\*\*(?:[^*]*+|\*(?!/)[^*]*+)*\*/(?!\s*function)~';
over 4 years ago · Santiago Trujillo 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