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

225
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 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