2013-12-19 3 views
0

저는이 html 코드 블록을 구문 분석하는 로직을 구현하는 방법을 숙고 해 왔습니다. 지금 jsoup, Java 및 Android를 사용하고 있습니다.Java 및 jsoup를 사용하여 특정 HTML 코드 구문 분석

기본 구조는 (하나의 내가 찾고 있어요) 표시 :

22시 48분 URL1 : 임의의 메시지

22시 44분 URL2을 : 더욱 임의의 메시지! 내가 "정리"할 것이

22:48 
<strong> <a href="www.randomUrl.com">url1</a>:</strong> Random message.22:44 
<strong> <a href="www.randomUrl.com">url2</a>:</strong> Even more random message!22.42 
<strong> <a href="www.randomUrl.com">url3</a>:</strong> This is a dumb message9922.20 
<strong> <a href="www.randomUrl.com">url4</a>:</strong> This is a dumb message3 

할 방법 :

코드는 (jsoup에 의해 제공됩니다 Element 객체에 저장) 물론

22:48 <strong> <a href="www.randomUrl.com">url1</a>:</strong> Random message. 
22:44 <strong> <a href="www.randomUrl.com">url2</a>:</strong> Even more random message! 
22.42 <strong> <a href="www.randomUrl.com">url3</a>:</strong> This is a dumb message99 
22.20 <strong> <a href="www.randomUrl.com">url4</a>:</strong> This is a dumb message3 

나는 않을 것 행의 시간을 절약하고 URL과 메시지를 일부 전용 배열 목록에 저장 한 다음 html을 제거합니다. 그러나 나는 이런 종류의 파싱을 어떻게 처리 할 것인지 듣고 싶습니다. 문제는 임의의 메시지가 모든 종류의 문자열이 될 수 있기 때문에 시간이 포함될 수 있다는 의미입니다 (22:33). 그래서 정규식을 사용하여 행을 구분할 수는 없습니다.

강한 접근 방식이 항상 새로운 행을 시작하는 것처럼 보이기 때문에 시간과 강약을 동시에 사용하여 구문 분석하는 것이 적절한 방법인지 궁금합니다.

감사합니다.

답변

0

JSoup는 크고 가치있는 라이브러리입니다. 그러나 부분 텍스트의 미묘한 변경은 명시적인 시작 및 종료 태그로 명확하게 구분하지 않으면 쉽게 달성 할 수 없습니다. 모든 성가신 타임 스탬프로

, 당신은 "> < 강력한 (결국 공백 다음에) 시간을"일치하는 모든 시퀀스에 시간을 제거 할 수 있습니다 항상 < 강력한 > 태그 뒤에 것으로 보인다.

이것은 매우 간단 String.replaceAll 정규식으로 수행 할 수

html = html.replaceAll("(\\d{2}[:\\.]\\d{2})(\\s*<strong>)","$2"); 
0

문자열 s.replaceAll Z = ("(\\의 D {2} : \\.] \\ D {2 }) \\ s * [\ n \ r] \\ s * ","\ n $ 1 ") .trim();

관련 문제