2013-05-18 3 views
1

좀 HTML을 구문 분석하고있어, 나는 body 태그의 모든 HTML을 얻을 필요가있다. 내 목표 문자열은 항상 다음과 같이 보일 것입니다 :Regex를 사용해도 안전합니까? (HTML)

<body><div><img src="" />text etc</div></body> 

하지만, 난 그냥 필요

<div><img src="" />text etc</div> 

내 목표 문자열이 항상 시작하고 그 body 태그로 끝납니다. 그러나 Regex를 사용하여 HTML을 구문 분석하지 말라는 반복적 인 경고가 있지만 현재 Regex 외에도 사용 가능한 솔루션이 없습니다.

질문 :는 안전 정규식 (들)이이 경우에이 사용할 수 있습니까? 아니면 그냥 잊어야합니까?

+0

이 실제로 무엇을 "나는이 순간에 정규식 이외의 것을 사용할 수에 대한 모든 가능한 솔루션을 필요가 없습니다"는 HTML에서 추출하고 의미? 왜 당신은 실행 가능한 솔루션을 가지고 있지 않습니까? * 실현 불가능한 솔루션을 사용하는 것이 최선이 아닌가? –

+0

내 논리와 수사학 선생님처럼 들리 네. 하지만 네, 맞습니다. 내가 지금 사용하고있는 해결책은 문제이지만, 지금 내가 가진 최선의 해결책이다. 내가 사용하고있는 DOM Parser는 요소 자체의 태그가 그대로있는 요소의 innerHTML을 반환합니다. 즉 내부의 HTML뿐만 아니라 전체 요소를 반환합니다. Regex에서 내부를 추출해야합니다. – mattsven

답변

3
당신은 당신의 정규식이 무엇인지 우리에게 보여주지 않았다

를 사용하는 경우,하지만만큼 안전하지 그것은 간단합니다 경우 구문 분석 DOM을 사용하는 등 :

<body>(.*?)</body> 

... 그것은 </body>가 속성 문자열이나 주석에 포함되어있을 가능성이 있기 때문이다. 그 위험을 기꺼이 감내한다면 괜찮을 것입니다. DOM 구문 분석을 사용하지 않아야하고 몸의 텍스트를 가져올 수있는 이유는 없습니다.하지만 효율성이 떨어지는 경우는 예외입니다.

또한 정규 표현식을 건너 뛰고 문자열 색인 <body></body>을 찾아서 그 사이에 부분 문자열을 가져올 수 있습니다. 그것은 더 빨라야합니다. 그런데

,이 분석되는 HTML 아니다; 그냥

+0

그것이 정규식의 방법이라고 추측 하겠지만, dom no를 사용하는 것이 훨씬 더 좋을까요? –

+0

하하, 그건 내 정확한 정규식 이었어. 지금 나는 그것이 매우 강력하지 않다는 것을 깨닫는다. .. 어떤 제안이라도? – mattsven

+0

@mattcurtis 그것은'가'속성이나 의견이 존재할 가능성이 높습니다? 아니면이 사건을 처리해야합니까? 그렇다면 DOM 파서 만 사용하십시오. 나는 그것에 익숙하지 않지만 iphone sdk에는 하나가 있다고 확신한다. –

0

이이 경우에 정규식을 사용하는 것이 괜찮습니다. body 태그의 innerHTML을 가져 오는 훨씬 쉬운 방법이 있다고 말한 것이 있습니다.

alert(document.body.innerHTML); 

은 ... 아니 정규식 당신에게 를 정확하게 제공해야하거나 jQuery를

$(body).html(); 
관련 문제