Perl에서 HTML TAG를 Strip할수 있는 완벽한 정규 표현식이 없을까요?

puaxx의 이미지

상황
1.몇백만건의 HTML데이터가 있고 내용은 일정치 않습니다.
2.Perl의 확장 모듈을 사용할수가 없습니다.
3.많은 시간이 없습니다.
4.정규식이나 직접코드를 짜야 합니다.

현재 제가 생각한 정규식은 고작

<\/?[!a-zA-Z][^>]*>

이건데요...가령

<a href="sdfsf?sdfkkk=>&xxvfd">

이런식으로 들어간게 있으면 제대로 안될거 같더군요.

정규식만으로 불가능할까요?

eungkyu의 이미지

puaxx wrote:
상황
1.몇백만건의 HTML데이터가 있고 내용은 일정치 않습니다.
2.Perl의 확장 모듈을 사용할수가 없습니다.
3.많은 시간이 없습니다.
4.정규식이나 직접코드를 짜야 합니다.

현재 제가 생각한 정규식은 고작

<\/?[!a-zA-Z][^>]*>

이건데요...가령

<a href="sdfsf?sdfkkk=>&xxvfd">

이런식으로 들어간게 있으면 제대로 안될거 같더군요.

정규식만으로 불가능할까요?

원래 &는 &amp; >는 &gt; <는 &lt;로 써야 하기 때문에 문제가 없어야 정상입니다.

<a href="sdfsf?sdfkkk=&gt;&amp;xxvfd">

이렇게 되어있는게 맞죠 ^^

그렇지만, 수많은 html이 그렇게 쓰여있지 않기 때문에 !!
문제가 발생합니다 -_-;;;;

대안은 없는 쓸데없는 답변이었습니다 ;;

이래서 HTML파싱은 어렵습니다 =_= 과연 어떤 오류까지 봐줘야 하는 것일까...

익명 사용자의 이미지

htmltidy 같은 걸 이용해서 원본 html 을 xhtml 로 변환한 다음에
처리하는게 어떨까요???
그럼 대부분의 문제가 해결될 것으로 보입니다만...

lifthrasiir의 이미지

eungkyu wrote:
puaxx wrote:
상황
1.몇백만건의 HTML데이터가 있고 내용은 일정치 않습니다.
2.Perl의 확장 모듈을 사용할수가 없습니다.
3.많은 시간이 없습니다.
4.정규식이나 직접코드를 짜야 합니다.

현재 제가 생각한 정규식은 고작

<\/?[!a-zA-Z][^>]*>

이건데요...가령

<a href="sdfsf?sdfkkk=>&xxvfd">

이런식으로 들어간게 있으면 제대로 안될거 같더군요.

정규식만으로 불가능할까요?

원래 &는 &amp; >는 &gt; <는 &lt;로 써야 하기 때문에 문제가 없어야 정상입니다.

<a href="sdfsf?sdfkkk=&gt;&amp;xxvfd">

이렇게 되어있는게 맞죠 ^^

그렇지만, 수많은 html이 그렇게 쓰여있지 않기 때문에 !!
문제가 발생합니다 -_-;;;;

대안은 없는 쓸데없는 답변이었습니다 ;;

이래서 HTML파싱은 어렵습니다 =_= 과연 어떤 오류까지 봐줘야 하는 것일까...

/<\/?[a-z0-9-:]+(?:\s+[a-z0-9-:]+(?:\s*=\s*(?(?=["'])(?:"[^"]*"|'[^']*')|\S+)?)+(?:\s*\/)?>/i

정도면 되지 않을까요? 잘 돌아 갈 지는 모르겠습니다만 이런 식으로 하면 되지 않을까 싶습니다.

- 토끼군

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.