Regexp för radbrytningar efter taggar i stökiga html-filer

Permalänk

Regexp för radbrytningar efter taggar i stökiga html-filer

Hej.

Jag har ett gäng stökiga html-filer som jag vill städa upp med hjälp av ett bashscript.

Som de ser ut nu så verkar alla taggar ha hamnat på samma rad. Jag vill ha en radbrytning efter varje tagg utom de som ligger mellan body-taggarna.

Det borde gå att knäcka med hjälp av sed och regexp. Jag och regexp är dock inte bästa polare så jag lyckas inte få till det. Någon här som är grym på regexp och kan hjälpa mig på traven?

Jag har koden klar för scriptet i övrigt. Det är bara ett fungerande regexp för att få till radbrytning efter tagg jag behöver hjälp med.

Permalänk
Legendarisk

Man bör inte parsa (x|x?ht)ml med regex, försök att lösa detta med en riktig xmlparser eller tidy istället.

Skickades från m.sweclockers.com

Visa signatur

Abstractions all the way down.

Permalänk
Hedersmedlem

Jag håller starkt med inlägg #2, men i detta fall så är det inte mycket parsning som ska göras.

Enklast är att köra typ

sed 's#\(</[^>]\+>\)#&\n#g'

på hela filen och sedan copy+pastea de nu radbrytna delarna i headern, om du inte vill röra <body>-segmentet. Om det inte handlar om en herrans massa filer, vill säga, men antar att det är räkneligt många.

Regexpet matchar en grupp bestående av '</' + [vilket tecken som helst förutom '>'] ⋅ [mer än 0] + '>' och ersätter den med det som träffade samt en avslutande radbrytning, och detta sker globalt (dvs inte bara en gång per rad).

Om du inte vill ha radbrytning efter enbart efter sluttaggar utan även starttaggar så är det bara att skippa '/'-tecknet i mitt matchningsmönster.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.