Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

110
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!