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

158
Views
expresiones regulares para encontrar más de una ocurrencia de comentario dentro de un bloque

Tengo algunos archivos de descuento en los que sigo un cierto formato de preguntas y respuestas para sincronizar mis tarjetas de mi software de toma de notas Obsidian con Anki. De alguna manera, parece haber un problema donde se crearon preguntas duplicadas en Anki debido a los caracteres de nueva línea. Quiero encontrar estos duplicados y eliminarlos de mi nota y eliminar los caracteres de nueva línea redundantes que causaron que ocurrieran estas preguntas duplicadas. Aquí hay un archivo de datos de muestra:

 ### Alias Q: what check to do before creating an alias? A: check whether any other command exists by that name using `type new-alias-name` <!--ID: 1643091253375--> --- Q: syntax to create an alias? A: `alias name='string'` <!--ID: 1645446702965--> - no spaces before or after the equal sign - single quotes around the command sequence ![[Pasted image 20220125092954.png]] <!--ID: 1643091253408--> --- ### Redirection/Piping Q: output of `> ls-output.txt` A: the file will be truncated if it exists or it would be created. <!--ID: 1645087988730--> - Simply using the redirection operator with no command preceding it will truncate an existing file or create a new empty file <!--ID: 1643351731943--> ---

Cada comentario que tiene un formato como <!--ID: 1645446702965--> es una tarjeta flash en Anki. En la 2da pregunta para crear un alias, puedes ver que hay 2 IDs. Quiero eliminar el primero y eliminar las nuevas líneas después de eso para que solo quede un comentario de ID.

Aquí está la expresión regular que estoy intentando - ^A:.+?(<!--ID:\s\d+-->)(?!---).+(<!--ID:\s\d+-->)

Aquí estoy tratando de hacer coincidir las secciones de Respuesta donde los comentarios de ID aparecen dos veces. Estoy usando una anticipación negativa para permitir cualquier cosa que no sea --- . Pero lo más destacado muestra que la expresión regular está llegando demasiado lejos. Soy bastante nuevo en Regex y acabo de terminar una ronda de lectura 'Dominar expresiones regulares por Jeffrey Friedl'. Todavía estoy tratando de entender el comportamiento codicioso y perezoso. Cualquier orientación que me ayude a avanzar en esto sería apreciada.

Instantánea de expresiones regulares en regex101.com

Tengo mi expresión regular con los datos publicados aquí en caso de que alguien quiera probar: https://regex101.com/r/jBSc8Y/1

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Además de las versiones ya vinculadas con los comentarios, la solución más práctica podría ser usar un reemplazo de cadena con una expresión regular simple como /<!--\s*ID:\s*\d+\s*-->\n+-\s+/g ... donde uno coincidiría ...

  • <!--\s*ID:\s*\d+\s*--> ... el formato de ID exacto
  • \n+-\s+ ... seguido de al menos una nueva línea, un guión y un espacio en blanco (-secuencia).

El último punto también describe lo que hace que un formato de ID sea un duplicado.

Entonces uno solo necesita reemplazar la coincidencia por - .

 const sampleText = ` ### Alias Q: what check to do before creating an alias? A: check whether any other command exists by that name using \`type new-alias-name\` <!--ID: 1643091253375--> --- Q: syntax to create an alias? A: \`alias name='string'\` <!--ID: 1645446702965--> - no spaces before or after the equal sign - single quotes around the command sequence ![[Pasted image 20220125092954.png]] <!--ID: 1643091253408--> --- ### Redirection/Piping Q: output of \`> ls-output.txt\` A: the file will be truncated if it exists or it would be created. <!--ID: 1645087988730--> - Simply using the redirection operator with no command preceding it will truncate an existing file or create a new empty file <!--ID: 1643351731943--> `; const regXDuplicateId = /<!--\s*ID:\s*\d+\s*-->\n+-\s+/g; console.log( sampleText.replace(regXDuplicateId, '- ') );
 .as-console-wrapper { min-height: 100%!important; top: 0; }

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!