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

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

 
Tuesday, March 13, 2007

Perl 펄] 정규식 옵션 m s 의미 사용법, Regex 문자열 검색 치환


정규식 맨 앞부분의 ms는 옵션이 아니라 연산자(operator)입니다. 옵션은 정규식의 맨 끝에 붙는 g나 i 같은 것입니다.

펄 정규식에서는 // 이런 슬래쉬 기호 두 개 사이에다 정규식을 기술합니다. 문자열 찾기인데 이것은 m// 과 동일한 것입니다. m// 을 간단히 줄여서 그냥 // 라고 하는 것입니다.


m// 또는 // 는 "찾기"에 해당하고
s/// 는 "바꾸기(치환)"에 해당합니다.


그런데 가끔 m// 이렇게 m을 명시적으로 사용해야 할 경우가 있습니다.

정규식에서 // 이런 슬래시 기호를 Delimiter(딜리미터; 구분 기호) 라고 하는데, 이 Delimiter 를 다른 기호로 바꾸어야 할 경우입니다.

만약 문자열 자체에 슬래시 기호가 많이 포함되어 있다면, 그 슬래시 기호 앞에 일일이 백슬래쉬(\)를 붙여 이스케이프해주는 것보다는, Delimiter 를 아예 다른 기호로 바꾸는 것이 편리할 것입니다.

Delimiter 를 다른 기호로 바꿀 때에는 정규식에서 m 을 생략할 수 없습니다. 다음 예제와 같습니다.

m 연산자 사용 예제


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

  my $s = "철수는 중국집에서 자장면을 시켰습니다.";


  # 패턴 매치 연산자인 m 을 생략한 일반적인 경우
  if ($s =~ /자장면/) {
    print "자장면이라는 문자열을 찾았음\n";
  }

  # m 을 붙인 경우
  if ($s =~ m/철수/) {
    print "철수라는 문자열을 찾았음\n";
  }


  # m 을 붙이고, 정규식 구분자를 캐럿(^) 기호로 변경한 경우
  if ($s =~ m^철수^) {
    print "철수라는 문자열을 찾았음\n";
  }


m^철수^ 에서
^철수^ 이렇게 m을 생략하면

syntax error at D:\Z\example.pl line 19, near "=~ ^"
Unrecognized character \xC3 at D:\Z\example.pl line 19.

이런 에러가 납니다.



s 연산자의 사용법은 여기에 있습니다: ▶▶ [Perl 정규식] 문자열 치환(바꾸기)/순서 변경/삭제 - s/// 치환 연산자(Substitution Operator)




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