18. april 2009 - 09:10
Der er
7 kommentarer og 1 løsning
hjælp til reg. exp.
Hej, jeg har en html streng. Jeg skal have fjernet alt før og efter body incl. body tag's, så det egentlig kun er den rå html for selve siden der er tilbage. så <html> <head><title>hej</title> </head> <body style="color: red;"> <div>mojn</div> <i>mojn mojn</i> </body></html> bliver til <div>mojn</div> <i>mojn mojn</i>
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
18. april 2009 - 13:37
#1
nevermind
18. april 2009 - 14:18
#2
Hvis din HTML ikke er alt for grumset, så er det faktisk rigtigt nemt: String inside = html.replaceAll(".*<body[^>]*>", "").replaceAll("</body>.*", "");
18. april 2009 - 15:39
#3
har prøvet noget lignende. Det fjerner kun linien med body.
18. april 2009 - 15:50
#4
Ah. Det er linieskiftene der driller. import java.util.regex.Pattern; public class InsideBody { private static final Pattern restart = Pattern.compile(".*<body[^>]*>", Pattern.DOTALL); private static final Pattern reend = Pattern.compile("</body>.*", Pattern.DOTALL); public static void main(String[] args) { String html = "<html>\r\n<head>\r\n<title>hej</title>\r\n</head>\r\n<body style=\"color: red;\">\r\n<div>mojn</div>\r\n<i>mojn mojn</i>\r\n</body>\r\n</html>"; System.out.println(html); String inside1 = html.replaceAll(".*<body[^>]*>", "").replaceAll("</body>.*", ""); System.out.println(inside1); String inside2 = reend.matcher(restart.matcher(html).replaceAll("")).replaceAll(""); System.out.println(inside2); } }
18. april 2009 - 16:01
#5
ja, det triller lidt bedre. Går ud fra du overlever uden point.
18. april 2009 - 16:18
#6
ork ja
21. april 2009 - 21:13
#7
lige et tillægsspørgsmål. Hvis jeg vil have den case-insensitive mht. body. Så den også fanger BODY, boDY etc.
21. april 2009 - 21:41
#8
Pattern.DOTALL + Pattern.CASE_INSENSITIVE
Kurser inden for grundlæggende programmering