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

100
Visualizações
Hacer coincidir una cadena entre delimitadores si y solo si contiene una ID específica usando REGEX

Estoy tratando de hacer coincidir una cadena entre delimitadores si y solo si contiene la identificación que estoy buscando. Por ejemplo, supongamos que tengo un archivo de texto que contiene varias entradas como las siguientes:

 /id:12345, comment:"test @#$%7 *<", date:JUN-06-21/;/comment:"@#rehj%fh^?*<", date:MAR-15-20, id:11333/;/date:AUG-22-18, id:44618, comment:"&%$@#^?*!!/;

Digamos que quiero hacer coincidir una entrada que tiene el ID 44618 usando REGEX. Lo que dificulta esto es que la identificación puede aparecer al principio, en el medio o en la última posición. El siguiente es el REGEX que tengo hasta ahora pero no funciona.

 \/\w[a-zA-Z0-9,:]*?\s?(id:44618,)\s?(\/\w[a-zA-Z0-9:;/])*
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Si solo necesita una identificación específica, simplemente escriba la identificación de expresiones regulares y establezca el indicador "g"-global y "m" multilínea yourString.match (/ id: 747484 / gm) Y para diferentes identificaciones yourString.match (/ id: \ d +/ gm)

about 4 years ago · Juan Pablo Isaza Relatório

0

Usó expresiones regulares para obtener la entrada completa donde la identificación puede estar en cualquier posición de la entrada:

 /\/[^;]*?\bid:44618\D[^;]*?;/

Regex en contexto y banco de pruebas:

 const input = '/id:12345, comment:"test @#$%7 *<", date:JUN-06-21/;' + '/comment:"@#rehj%fh^?*<", date:MAR-15-20, id:11333/;' + '/date:AUG-22-18, id:44618, comment:"&%$@#^?*!!/;'; const regex = /\/[^;]*?\bid:44618\D[^;]*?;/; alert(input.match(regex)[0]);

Salida de alerta, imprimiendo toda la entrada:

 /date:AUG-22-18, id:44618, comment:"&%$@#^?*!!/;
about 4 years ago · Juan Pablo Isaza Relatório

0

El patrón no coincide con nada porque la primera clase de caracteres [a-zA-Z0-9,:] no contiene todos los caracteres permitidos para coincidir hasta que id:44618 en la cadena de ejemplo.

Podría extenderlo, por ejemplo, de esta manera , pero eso no coincidirá hasta que el delimitador /;

Otro pensamiento a tener en cuenta es que si la identificación está al principio como /id:44618 , entonces hacer coincidir el carácter de la primera palabra como \/\w en su patrón evitará que coincida con la identificación ya que el primer carácter ya se ha consumido.

Podría extender la clase de carácter al final del patrón con todos los caracteres permitidos, pero como también puede ser un comentario, no conoce los posibles caracteres por adelantado.

Si el campo de comentario no está antes del campo de identificación, lo que podría hacer es afirmar el carácter de la palabra después de la apertura / usando una anticipación positiva (?=\w) y luego hacer coincidir la identificación y hacer coincidir la menor cantidad posible de caracteres .*? hasta el cierre /;

 \/(?=\w)[a-zA-Z0-9,:;\s-]*?(id:44618).*?\/;

Demostración de expresiones regulares

Si no hay otro / permitido, también puede usar una clase de carácter negado [^/]* que coincida con cualquier carácter excepto la barra inclinada

 \/[^/]*(id:44618)[^/]*\/;

Demostración de expresiones regulares

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