mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Thursday, March 01, 2007

Perl/펄 정규식] HTML 태그 속의 텍스트, URL 링크 추출; Regex


특정 HTML 태그 속의 텍스트를 정규식으로 추출하는 방법입니다. 예를 들어, <title></title> 태그 속의 페이지 제목을 이 방법으로 추출할 수 있습니다. HTML이 아닌 일반 텍스트 파일에서도 사용 가능합니다.

정규식 사용법 중에서 가장 중요하고 가장 실용적인 예제일 것입니다.

아래 예제에서, $1 이라는 것은, 정규식에서 첫번째 소괄호"()"가 매치되는 부분이 자동으로 저장되는 변수입니다. 읽기 전용 변수이기에 $1 에 수동으로 값을 대입할 수는 없습니다.

정규식으로, 변수에서 문자열 추출 예제


파일명: example.pl
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
#!/usr/bin/perl
use strict; use warnings;

  my $foo;
  my $result;

  #####################################################
  # 타이틀 태그 속의 텍스트 추출

  $foo = "<title>나의 홈페이지</title>";
  # 다음 정규식에서 (.*) 바로 이 부분이 캡처되는 부분입니다.
  # 정규식을 둘러싸는 슬래시 기호(/)가 태그 안에서도 중복되기에
  # \/ 이렇게 앞에 백슬래쉬(\)를 붙여서 이스케이프했습니다.
  $foo =~ /<title>(.*)<\/title>/;
  $result = $1;

  print $result, "\n";
  # 출력 결과: 나의 홈페이지





  #####################################################
  # HTML 링크 태그에서, URL만 추출

  # 문자열 속에 이미 큰따옴표가 사용되기에, 문자열 정의는 작은따옴표를 사용했음
  $foo = '<a href="http://example.com/"><img src="img/title.gif" title="나의 홈페이지" alt="여행 사진" /></a>';
  $foo =~ /<a href="(.*)"><img src=/;
  $result = $1;

  print $result, "\n";
  # 출력 결과: http://example.com/




그렇지만 HTML 파일 전체를 TXT 로 변환한다든지 하는 용도로는 위의 예제를 사용하기 곤란합니다. HTML 의 모든 태그를 제거하는 것은 정규식으로는 사실상 불가능합니다. 중첩된 태그나, 태그 속에서 행갈이가 된 경우, 닫히지 않은 태그의 처리 등 여러 가지 복잡한 문제가 많기 때문입니다: 참고 ▶▶ PHP] HTML 본문 텍스트 추출, 태그 제거; HTML to TEXT; Strip Tags



실제 HTML 파일에서 문자열을 추출하는 실용적인 예제입니다: ▶▶ Perl/펄 정규식] HTML 파일, 문자열(타이틀), URL 추출; UTF-8 Regex

추출 결과를 배열에 저장: ▶▶ 펄/Perl 정규식] 문자열 추출; Regex String Extract Example




tag: perl
Perl | 펄 프로그래밍
tag: regex
정규식 | 정규표현식 | Regex | Regular Expression

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top