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

168
Visualizações
Filtrado de archivos en el directorio con regex.match usando Puppeteer

Tengo problemas con regex.match que no coincide con los nombres de archivo que sí coinciden cuando los pruebo individualmente en un verificador en línea https://regex101.com

¿Alguien puede detectar el problema en el código a continuación?

P: ¿Debería usar expresiones regulares? prueba en lugar de partido? En caso afirmativo, ¿cómo creo la expresión regular cuando contiene variables?

Debe coincidir con todos los archivos que comienzan con: ES_(Stay) True - Lars Eriksson

Lista de archivos y directorios en la ruta encontrada por fs.readdirSync:

 .DS_Store ES_(Stay) True - Lars Eriksson (22).mp3 ES_(Stay) True - Lars Eriksson (22).mp3.crdownload ES_(Stay) True - Lars Eriksson.mp3 ES_(Stay) True - Lars Eriksson.mp3.crdownload Other - File (22).mp3 Other - File (22).mp3.crdownload Other - File.crdownload Other - File.mp3 originals

La expresión regular se convierte en:

 /^(ES_\(Stay\) True - Lars Eriksson(?: \([0-9]+\))?.mp3(?:.crdownload?)?)$/

Guión de titiritero:

 const puppeteer = require('puppeteer'); const fs = require('fs'); (async () => { function escapeRegex(string) { return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } let path = '/path/to/files/'; let title = 'ES_(Stay) True'; let artist = 'Lars Eriksson'; title = escapeRegex(title); artist = escapeRegex(artist); let regex = `/^(${title} - ${artist}(?: \\([0-9]+\\))?\.mp3(?:\.crdownload?)?)$/`; console.log(regex); fs.readdirSync(path) .filter(f => { regex.match(); }) .map(f => { console.log(f); }); })();
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Creo que para convertir una cadena a expresiones regulares, debe usar RegExp() , no solo usarlo como cadena, por ejemplo

 let regex = new RegExp(`^(${title} - ${artist}(?: \\([0-9]+\\))?\.mp3(?:\.crdownload?)?)$`, 'gi'); console.log(regex);
  • también se usa regex.match() ¿qué esperas que coincida cuando no hay nada que coincida? Estás tratando de hacer coincidir la expresión regular con nada que debería ser
 f.match(regex)

tu codigo deberia ser asi

 const puppeteer = require('puppeteer'); const fs = require('fs'); (async () => { function escapeRegex(string) { return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } let path = '/path/to/files/'; let title = 'ES_(Stay) True'; let artist = 'Lars Eriksson'; title = escapeRegex(title); artist = escapeRegex(artist); let regex = new RegExp(`^(${title} - ${artist}(?: \\([0-9]+\\))?\.mp3(?:\.crdownload?)?)$`, 'gi'); console.log(regex); let file = fs.readdirSync(path), matched = file.filter(f => f.match(regex)) console.log(matched) })();

Resultado

 0: "ES_(Stay) True - Lars Eriksson (22).mp3" 1: "ES_(Stay) True - Lars Eriksson (22).mp3.crdownload" 2: "ES_(Stay) True - Lars Eriksson.mp3" 3: "ES_(Stay) True - Lars Eriksson.mp3.crdownload"
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