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
CALL PRXNEXT
Go to previous page
Previous
Go to next page
Next
처음메뉴로

49. CALL PRXNEXT



한 문자열에서 반복하여서 패턴이 일치하는 문자의 위치와 length를 반환한다.
Category: Character String Matching

문 법
인 수
참 고
예 제
함 수 비 교

문법

MAIN

CALL PRXNEXT (regular-expression-id, start, stop, source, position, length);

Arguments

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


참고

단, 메모리에 직접 쓰는 것은 상당히 조심할 필요있습니다.

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

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

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

예제

MAIN

 

예 제 1 :

Text변수에서 문장을 검색하여서 cat, rat, bat의 문자열의 위치와 length를 반환하여 출력한다.

SAS Statements Results
data _null_;
      ExpressionID = prxparse('/[crb]at/');
      put ExpressionID =;
      text = 'The woods have a bat, cat, and a rat!';
      start = 1;
      stop = length(text);
      call prxnext(ExpressionID, start, stop, text, position, length);
      do while (position > 0);
         found = substr(text, position, length);
         put found= position= length=;
         call prxnext(ExpressionID, start, stop, text, position, length);
      end;
run;
 

 

found=bat position=18 length=3

found=cat position=23 length=3

found=rat position=34 length=3

 

예 제 2 :

string변수에서 순차적으로 숫자문자를 찾아서 출력을 한다.

SAS Statements Results
DATA FIND_NUM;
     IF _N_ = 1 THEN RET = PRXPARSE("/\d+/");
     RETAIN RET;
     INPUT STRING $40.;
     START = 1;
     STOP = LENGTH(STRING);
     CALL PRXNEXT(RET,START,STOP,STRING,POSITION,LENGTH);
     ARRAY X[5];
     DO I = 1 TO 5 WHILE (POSITION GT 0);
        X[I] = INPUT(SUBSTR(STRING,POSITION,LENGTH),9.);
        CALL PRXNEXT(RET,START,STOP,STRING,POSITION,LENGTH);
        output;
     END;
DATALINES;
THIS 45 LINE 98 HAS 3 NUMBERS
NONE HERE
12 34 78 90
;
 

 

       STRING                 X1 X2 X3 X4 X5
THIS 45 LINE 98 HAS 3 NUMBERS 45  . .  .  .
THIS 45 LINE 98 HAS 3 NUMBERS 45 98 .  .  .
THIS 45 LINE 98 HAS 3 NUMBERS 45 98 3  .  .
12 34 78 90                   12  . .  .  .
12 34 78 90                   12 34 .  .  .
12 34 78 90                   12 34 78 .  .
12 34 78 90                   12 34 78 90 .


함수비교

Functions:

046.CALL PRXCHANGE

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

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