2010-04-17 3 views
1

내 HTML을 도움이 필요 보인다 자바 정규식, 이스케이프 문자로

String result = ""; 
     Pattern p = Pattern.compile("\"blue\">&nbsp;&nbsp;$&nbsp;(.*)&nbsp;</font></td>"); 

     Matcher m = p.matcher(text); 

     if(m.find()) 
      result = m.group(1).trim(); 

일치하는 것 같지 않습니다.

탈출 문자가 누락 되었나요?

+3

가능하면 HTML을 정규식으로 구문 분석하지 마십시오. 대신 HTML 파서를 사용하십시오. –

+0

html 구문 분석을 사용하여 정규식을 사용하지 마십시오 .. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 –

답변

2

정규 표현식 수준에서 이스케이프 처리하지 않는 한 $은 줄 끝과 일치한다는 의미입니다. 단일 \$에서 이스케이프해야하는 경우 문자열 리터럴에서 이스케이프 처리해야합니다. 즉 2 개의 \ 자입니다. 그래서 ...

... Pattern.compile("\"blue\">&nbsp;&nbsp;\\$&nbsp;(.*)&nbsp;</font></td>"); 

는하지만 HTML을 구문 분석하는 정규 표현식에를 사용하지 않도록 주석의 사람들은 절대적 권리 있습니다! 만성적으로 연약한 코드를 원하지 않는 한, 코드는 엄격하거나 엄격하지 않은 HTML 파서를 사용해야합니다.

+0

HtmlParser를 사용해 보았습니다. 내가 정규식 경로를 갈거야 그래서 붙어있어! – Blankman

+0

@Blankman - 저는 HtmlParser로 돌아 가야한다고 생각합니다. 또는 HTML 형식이 잘못되었다는 문제인 경우 HtmlCleaner와 같이 엄격하지 않은 파서로 전환하십시오. 여기 –

+0

은 htmlParser 질문입니다. http://stackoverflow.com/questions/2660866/parsing-html-using-htmlparser thanks! – Blankman

1

도살해야합니까 $ (두 개의 슬래시가있는 것 같습니다)?