16. februar 2008 - 10:01Der er
12 kommentarer og 1 løsning
Finde html-tags med bestemt css klasse
Hvordan laver jeg en regex, som finder alle html-tags med en bestemt cssklasse? Eksempelvis vil jeg gerne finde alle html-tags med cssklassen "selected" ? Jeg vil gerne have både tagget og indholdet, dvs. <TAG class="seleced">bla bla</TAG>
er det muligt at matche et tag på "selected" selvom tagget måtte have flere cssklasser? Lad os sige, at jeg gerne vil finde følgende tag: <span class="selected frontpage">bla bla</span> eller <span class="frontpage selected">bla bla</span>
dvs. "selected" kan stå på forskellige steder i class og optræder ikke nødvendigvis alene
Hm... kan ikke helt få det til at virke. Min kode: string tagExpression="(<[^>]+class=\"[^\"]*?\bselected\b[^\"]*\"[^>]*>)"; string div="<span class=\"frontpage selected\">bla bla</span>";
MatchCollection tags = Regex.Matches(div.ToLower(), tagExpression, RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.IgnoreCase); foreach (Match tag in tags) { System.Diagnostics.Debug.WriteLine(tag.Value); }
er det egentligt muligt at "rense" resultatet for andre htmltags?
Det endte med, at min regex ser således ud: string baseExpression = "(<[^>]+class=\"[^\"]*?\\bselected\\b[^\"]*\"[^>]*>)(.*?)</"; Jeg hiver alle match ud: MatchCollection tags = Regex.Matches(html.ToLower(), tagExpression, RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.IgnoreCase);
den finder alle tags med "selected" i css-klassen og hiver også indholdet ud indtil tagget afsluttes.
Nogle af mine resultater indeholder dog "<br />" (eksempelvis hvis htmlen er <span class="frontpage selected">bla <br /> bla</span>.
Kan regex laves så den IKKE også hiver indlejrede tags ud (eks <br />) ?
Hvis du ønsker at bruge det der mønster, så tvinger du den jo til at matche alt indlejret tekst med - inkl. eventuelle tags.
Jeg kan ikke helt se hvorfor at du har taget den sidste del med ... specielt eftersom at du alligevel ikke matcher hele slut-taggen med (men kun lige starten af den)?
jeg vil gerne have alt med i mellem start- og slut-tagget og "</" markerer slutningen af tagget, så derfor tager jeg det med. Det er indholdet og ikke tagget selv, jeg gerne vil hive ud i sidste ende.
Men så får du jo også automatisk eventuelle indlejrede tags med. :^)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.