상황 1.몇백만건의 HTML데이터가 있고 내용은 일정치 않습니다. 2.Perl의 확장 모듈을 사용할수가 없습니다. 3.많은 시간이 없습니다. 4.정규식이나 직접코드를 짜야 합니다.
현재 제가 생각한 정규식은 고작
<\/?[!a-zA-Z][^>]*>
이건데요...가령
<a href="sdfsf?sdfkkk=>&xxvfd">
이런식으로 들어간게 있으면 제대로 안될거 같더군요.
정규식만으로 불가능할까요?
상황 1.몇백만건의 HTML데이터가 있고 내용은 일정치 않습니다. 2.Perl의 확장 모듈을 사용할수가 없습니다. 3.많은 시간이 없습니다. 4.정규식이나 직접코드를 짜야 합니다. 현재 제가 생각한 정규식은 고작 <\/?[!a-zA-Z][^>]*> 이건데요...가령 <a href="sdfsf?sdfkkk=>&xxvfd"> 이런식으로 들어간게 있으면 제대로 안될거 같더군요. 정규식만으로 불가능할까요?
원래 &는 & >는 > <는 <로 써야 하기 때문에 문제가 없어야 정상입니다.
<a href="sdfsf?sdfkkk=>&xxvfd">
그렇지만, 수많은 html이 그렇게 쓰여있지 않기 때문에 !! 문제가 발생합니다 -_-;;;;
대안은 없는 쓸데없는 답변이었습니다 ;;
이래서 HTML파싱은 어렵습니다 =_= 과연 어떤 오류까지 봐줘야 하는 것일까...
htmltidy 같은 걸 이용해서 원본 html 을 xhtml 로 변환한 다음에 처리하는게 어떨까요??? 그럼 대부분의 문제가 해결될 것으로 보입니다만...
puaxx wrote:상황 1.몇백만건의 HTML데이터가 있고 내용은 일정치 않습니다. 2.Perl의 확장 모듈을 사용할수가 없습니다. 3.많은 시간이 없습니다. 4.정규식이나 직접코드를 짜야 합니다. 현재 제가 생각한 정규식은 고작 <\/?[!a-zA-Z][^>]*> 이건데요...가령 <a href="sdfsf?sdfkkk=>&xxvfd"> 이런식으로 들어간게 있으면 제대로 안될거 같더군요. 정규식만으로 불가능할까요? 원래 &는 & >는 > <는 <로 써야 하기 때문에 문제가 없어야 정상입니다. <a href="sdfsf?sdfkkk=>&xxvfd"> 이렇게 되어있는게 맞죠 ^^ 그렇지만, 수많은 html이 그렇게 쓰여있지 않기 때문에 !! 문제가 발생합니다 -_-;;;; 대안은 없는 쓸데없는 답변이었습니다 ;; 이래서 HTML파싱은 어렵습니다 =_= 과연 어떤 오류까지 봐줘야 하는 것일까...
/<\/?[a-z0-9-:]+(?:\s+[a-z0-9-:]+(?:\s*=\s*(?(?=["'])(?:"[^"]*"|'[^']*')|\S+)?)+(?:\s*\/)?>/i
정도면 되지 않을까요? 잘 돌아 갈 지는 모르겠습니다만 이런 식으로 하면 되지 않을까 싶습니다.
- 토끼군
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: Perl에서 HTML TAG를 Strip할수 있는 완벽한 정규 표현식이 없을까요?
원래 &는 & >는 > <는 <로 써야 하기 때문에 문제가 없어야 정상입니다.
이렇게 되어있는게 맞죠 ^^
그렇지만, 수많은 html이 그렇게 쓰여있지 않기 때문에 !!
문제가 발생합니다 -_-;;;;
대안은 없는 쓸데없는 답변이었습니다 ;;
이래서 HTML파싱은 어렵습니다 =_= 과연 어떤 오류까지 봐줘야 하는 것일까...
htmltidy 같은 걸 이용해서 원본 html 을 xhtml 로 변환한
htmltidy 같은 걸 이용해서 원본 html 을 xhtml 로 변환한 다음에
처리하는게 어떨까요???
그럼 대부분의 문제가 해결될 것으로 보입니다만...
Re: Perl에서 HTML TAG를 Strip할수 있는 완벽한 정규 표현식이 없을까요?
/<\/?[a-z0-9-:]+(?:\s+[a-z0-9-:]+(?:\s*=\s*(?(?=["'])(?:"[^"]*"|'[^']*')|\S+)?)+(?:\s*\/)?>/i
정도면 되지 않을까요? 잘 돌아 갈 지는 모르겠습니다만 이런 식으로 하면 되지 않을까 싶습니다.
- 토끼군
댓글 달기