Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

217
Vistas
¿Cómo unir todas las líneas que tienen dos palabras que no son iguales?

¿Es posible usar Regex para hacer coincidir todas las líneas que tienen 2 palabras que no son iguales?

Entiendo que puedo usar \d+: ([,\w]+ )\1|(.+)/gm
Aquí es donde capturas las líneas con la misma palabra
Luego captura todo lo demás
Luego ejecuta la función para hacer algo solo con el grupo 2
Pero, ¿hay alguna manera de hacer coincidir solo las líneas que no son iguales?

1: 43.186 43.186
2: 296.531 296.531
3: 108086 108086
4: abcdef abcdef
5: Capture This
6: 497.802 497.802
7: 200,062 300,062
8: Not Same
9: 202232 252232
10: 4.324.452 4.324.452

Ejemplo:

 let string = ` 1: 43,186 43,186 2: 296,531 296,531 3: 108086 108086 4: abcdef abcdef 5: Capture This 6: 497,802 497,802 7: 200,062 300,062 8: Not Same 9: 202232 252232 10: 4,324,452 4,324,452 `; let magicalRegex = /\d+: (This One) (Does not match this one)/gm; string.replace(magicalRegex, matched=>{ /*These are the matches I found master*/ ` 5: Capture This 7: 200,062 300,062 8: Not Same 9: 202232 252232 ` /*Run some special code*/ /*Return matched*/ });

First Second Third
isNum: Anything Must Match Second

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puede usar /^\d+:\s+(\S+)\s+(?!\1$)\S+$/gm regex para extraer las coincidencias y luego simplemente unir los elementos, vea la demostración de expresiones regulares y la demostración de JavaScript a continuación:

 let string = `1: 43,186 43,186 2: 296,531 296,531 3: 108086 108086 4: abcdef abcdef 5: Capture This 6: 497,802 497,802 7: 200,062 300,062 8: Not Same 9: 202232 252232 10: 4,324,452 4,324,452`; let magicalRegex = /^\d+:\s+(\S+)\s+(?!\1$)\S+$/gm; console.log( string.match(magicalRegex).join("\n") )

La expresión regular ^\d+:\s+(\S+)\s+(?!\1$)\S+$ coincide

  • ^ - comienzo de línea
  • \d+ - uno o más dígitos
  • : - dos puntos
  • \s+ - uno o más espacios en blanco
  • (\S+) - Grupo 1: uno o más caracteres sin espacios en blanco
  • \s+ - uno o más espacios en blanco
  • (?!\1$) - una búsqueda anticipada negativa que falla la coincidencia si hay un valor de Grupo 1 inmediatamente a la derecha hasta el final de la cadena
  • \S+ - uno o más caracteres que no sean espacios en blanco
  • $ - fin de línea.
about 4 years ago · Juan Pablo Isaza Denunciar

0

Para el caso de uso y los requisitos del OP, una expresión regular simple que coincida y capture un espacio que no sea en blanco (secuencia) separado por un espacio en blanco (secuencia) además debe garantizar la singularidad de cada contenido de nueva línea a través de una referencia inversa utilizada dentro de un lookahead negativo ... /^(\S+)\s+(?!\1).*/gm ...

 console.log( `43,186 43,186 296,531 296,531 108086 108086 abcdef abcdef Capture This 497,802 497,802 200,062 300,062 Not Same 202232 252232 4,324,452 4,324,452`.match(/^(\S+)\s+(?!\1).*/gm) );
 .as-console-wrapper { min-height: 100%!important; top: 0; }

Y para que coincida completamente con el código de ejemplo del OP, se debe refinar la primera expresión regular de /^(\S+)\s+(?!\1).*/gm a /^(?:\d+\:\s*)(\S+)\s+(?!\1).*/gm agregando (?:\d+\:\s*) al anterior, que coincide con el patrón de dígitos, dos puntos y espacios en blanco al comienzo de cada nueva línea. ..

 console.log( `1: 43,186 43,186 2: 296,531 296,531 3: 108086 108086 4: abcdef abcdef 5: Capture This 6: 497,802 497,802 7: 200,062 300,062 8: Not Same 9: 202232 252232 10: 4,324,452 4,324,452`.match(/^(?:\d+\:\s*)(\S+)\s+(?!\1).*/gm).join('\n') );
 .as-console-wrapper { min-height: 100%!important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Bueno, si te entendí correctamente, la expresión regular se vería así

 string regex = @"^(\w+)\s(?:(?!\1).)*$";

Aquí está el violín: https://dotnetfiddle.net/0ueUKd Y marcado aquí: https://www.regexpal.com/

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda