SAS FUNCTION
SAS 9.1.3
Go to Documentation Home
HOME
Go to Book List
FUN_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
SAS  9.1.3
Go to Feedback page
MAIL
PRXMATCH
Go to previous page
Previous
Go to next page
Next
처음메뉴로

330. PRXMATCH



패턴 일치여부를 검색하고, 패턴이 발견된 첫 번째 위치를 반환한다.
Category: 문자열 비교

문 법
인 수
예 제
함 수 비 교

문법

MAIN

PRXMATCH (regular-expression-id | perl-regular-expression, source)

Arguments

regular-expression-id
는 PRXPARSE 함수에 의해 반환되는 인식자.


참고
 

 정규식 참고( http://koxo.com/lang/js/refers/jsGroup.html )

* 패턴 매칭 변경자(M o d i f i e r s) : /i(대소문자를 구별하지 않음)

SAS regular 형식 은 RX로 시작하고, Perl regular형식은 PRX로 시작한다.

좀 더 상세한 사항을 알고 싶으신 분은 PERL언어에 관하여 찾아보시기를 바랍니다.

* PERL : 자료를 추출하고 그에 의거한 보고서를 작성하는데 사용하는 프로그래밍언어 가운데 하나이다.


예제
 

예 제 1 :

'Hello world!'에서 world 문자가 발견된 첫 위치를 반환한다.

SAS Statements Results

data _null_;

     patternID    = prxparse('/world/');

     position     = prxmatch(patternID, 'Hello world!');

     put position =;

run;

 

position=7
 

예 제 2 :

HH:SS(.MMM)의 형태를 찾는다.

(?:\.(\d+))? : 이것은 패턴에 대한 검색은 하나 캡쳐를 하지 않는 비캡쳐 검색으로,

패턴 매칭은 하나 변수로 추출 하지않는 즉,있으면 찾고 없으면 생략하는 방식이라 하겠다.

시간의 형태에 따라서 분,초 또는 분,초,MS의 형태로 나눈다.

SAS Statements Results

data _null_;

     if _N_ = 1 then do;

        retain PerlExpression;

        pattern = "/(\d+):(\d\d)(?:\.(\d+))?/";

        PerlExpression = prxparse(pattern);

     end;

  

     array match[3] $ 8;

     input minsec $80.;

     position = prxmatch(PerlExpression, minsec);

     if position ^= 0 then do;

        do i = 1 to prxparen(PerlExpression);

           call prxposn(PerlExpression, i, start, length);

           if start ^= 0 then match[i] = substr(minsec, start, length);

        end;

        put match[1] "minutes, " match[2] "seconds" @;

        if ^missing(match[3]) then put ", " match[3] "milliseconds";

     end;

datalines;

14:56.456

45:32

;

run;

 

 

 

 

 

 

 

 

14 minutes, 56 seconds, 456 milliseconds

45 minutes, 32 seconds

예 제 3 :

기본적으로 bar의 단어로 단독으로 존재하거나, 앞에 'foo'를 포함하는 문장을 검색한다.

SAS Statements Results

data back;

     input x $12.;

     position=prxmatch('/(?:foo)?bar/',x);

cards;

foo

bar

foobar

foo bar

some foo

some bar

some foobar

some foo bar

;

run;

 

x               position

 

foo                 0

bar                 1

foobar              1

foo bar             5

some foo            0

some bar            6

some foobar         6

some foo bar       10

예 제 4 :

zip변수 형태가 5자리-4자리 숫자 형태인 데이터를 검색하여 추출한다.

SAS Statements Results

data ZipCodes;

     input name: $16. zip:$10.;

datalines;

Johnathan 32523-2343

Seth 85030

Kim 39204

Samuel 93849-3843

;

 

data ZipPlus4;

 set ZipCodes;

     where prxmatch('/\d{5}-\d{4}/', zip);

run;

 

 

 

  name         zip

 Johnathan    32523-2343

 Samuel       93849-3843

 


함수비교

Functions:

046.CALL PRXCHANGE

  047.CALL PRXDEBUG
  048.CALL PRXFREE
  049.CALL PRXNEXT
  050.CALL PRXPOSN
  051.CALL PRXSUBSTR
  329.PRXCHANGE
  331.PRXPAREN
  332.PRXPARSE
  333.PRXPOSN

2006년 백승민 제작하였답니다. 
( http://cafe.daum.net/statsas )