¿Hay alguna manera de expresiones regulares de dígito a dígito?
Tengo esta lista de canciones:
01. Intro 02. Waage 03. Hyänen (feat. Samra) 04. Ich will es bar (feat. Haftbefehl) 05. Am Boden bleiben (feat. Casper & Montez) 06. Panzerglas (feat. Face) 07. Sobald Du gehst 08. 90's (feat. Olson) 09. Erzähl' mir nix (feat. Nio) 10. Dope & 40s 11. Lila (feat. Bosca) 12. Wo ich wohn' 13. Bahnen 14. 200K que traté de dividir con /\d\d([^\d]*)/g en objetos. Pero obtuve como resultado:
0: "" 1: ". Intro " 2: "" 3: ". Waage " 4: "" 5: ". Hyänen (feat. Samra) " 6: "" 7: ". Ich will es bar (feat. Haftbefehl) " 8: "" 9: ". Am Boden bleiben (feat. Casper & Montez) " 10: "" 11: ". Panzerglas (feat. Face) " 12: "" 13: ". Sobald Du gehst " 14: "" 15: ". " 16: "" 17: "'s (feat. Olson) " 18: "" 19: ". Erzähl' mir nix (feat. Nio) " 20: "" 21: ". Dope & " 22: "" 23: "s " 24: "" 25: ". Lila (feat. Bosca) " 26: "" 27: ". Wo ich wohn' " 28: "" 29: ". Bahnen " 30: "" 31: ". " 32: "" 33: "" 34: "0K" ¿Cómo incluyo los números 01 , 02 , 03 ... y cuáles son las posibilidades para casos como la pista 14 donde la pista del título es 200k ?
Puedes usar
text.split(/\s+(?=\d+\.\s)/)Vea la demostración de expresiones regulares . Detalles :
\s+ - uno o más espacios en blanco(?=\d+\.\s) - una anticipación positiva que requiere uno o más dígitos, . y un espacio en blanco que aparecerá inmediatamente a la derecha de la ubicación actual.Vea la demostración de JavaScript:
const text = "01. Intro 02. Waage 03. Hyänen (feat. Samra) 04. Ich will es bar (feat. Haftbefehl) 05. Am Boden bleiben (feat. Casper & Montez) 06. Panzerglas (feat. Face) 07. Sobald Du gehst 08. 90's (feat. Olson) 09. Erzähl' mir nix (feat. Nio) 10. Dope & 40s 11. Lila (feat. Bosca) 12. Wo ich wohn' 13. Bahnen 14. 200K"; text.split(/\s+(?=\d+\.\s)/).forEach( x => console.log(x))Si necesita asegurarse de que los números de viñetas aparezcan de forma incremental, debe ajustar el código para
const text = "01. Intro containing 26. chars 02. Waage 03. Hyänen (feat. Samra) 04. Ich will es bar (feat. Haftbefehl) 05. Am Boden bleiben (feat. Casper & Montez) 06. Panzerglas (feat. Face) 07. Sobald Du gehst 08. 90's (feat. Olson) 09. Erzähl' mir nix (feat. Nio) 10. Dope & 40s 11. Lila (feat. Bosca) 12. Wo ich wohn' 13. Bahnen 14. 200K"; var chunks = text.split(/\s+(?=\d+\.\s)/) chunks = chunks.reduce( function(acc, currentValue, index) { if (index>0) { const num = Number(currentValue.match(/^\d+/)[0]) if (num - num_prev === 1) { acc.push(currentValue); num_prev = num; } else { acc[acc.length-1] += ` ${currentValue}`; } return acc; } else { acc = [currentValue]; num_prev = 1; return acc; } }, []) chunks.forEach( x => console.log(x))