포스팅 목차
CALL PRXCHANGE
지정한 패턴과 일치하는 문자열을 검색하여 검색된 부분을 변경하기 원하는 대체 문자열로 변경 작업을 수행한다.
| Category: | 문자열 비교 함수(문자열 매칭, Character String Matching) | 
| MAIN | 
문 법
CALL PRXCHANGE (regular-expression-id, times, old-string <, new-string <, result-length <, truncation-value <, number-of-changes>>>>);  | 
Arguments
- regular-expression-id
 
-      는 PRXPARSE함수로 부터 반환된 숫자 패턴 인식자를 지정.
 
- times
 
-      는 검색 횟수를 지정.
 
- old-string
 
-       는 검색과 교체를 위한 문자 표현 지정.
 
- new-string
 
-      는 old-string을 변경하기 위한 결과를 반환하기 위한 문자 변수 지정.
 
- result-length
 
-       는 결과에 대한 문자의 수를 지정하는 숫자 변수.
 
- truncation-value
 
-      는 변경 작업의 결과에 의존하는 0과 1의 값.
0 : 만약 전체 교체 결과가 new-string의 length보다 더 길지 않은 경우.
1 : 만약 전체 교체 결과가 new-string의 length보다 더 긴 경우.
 
- number-of-changes
 
-      는 반환된 교체의 전체 숫자가 지정된 숫자 변수.
 
참 고
SAS regular 형식 은 RX로 시작하고, Perl regular형식은 PRX로 시작한다.
좀 더 상세한 사항을 알고 싶으신 분은 PERL언어에 관하여 찾아보시기를 바랍니다.
* PERL : 자료를 추출하고 그에 의거한 보고서를 작성하는데 사용하는 프로그래밍언어 가운데 하나이다.
 
관련 함수
| 함수명 | 함수내용 | 
| CALL PRXCHANGE | 지정한 패턴과 일치하는 문자열을 검색하여 검색된 부분을 변경하기 원하는 대체 문자열로 변경 작업을 수행한다. | 
| CALL PRXDEBUG | PERL 정규식이 컴파일 되는 과정과 패턴이 문자값과 일치 될 때 반환되는 값에 대한 정보를 제공한다. | 
| CALL PRXFREE | 메모리에 할당된 Perl regular 표현식을 초기화 한다. 일반적으로 데이터 스텝이 종료되면 리소스가 초기화 된다. | 
| CALL PRXNEXT | 문자열에서 지정한 패턴과 일치하는 패턴 검색 작업을 반복적으로 수행하여서 패턴과 일치하는 하위 문자열의 위치와 length를 반환한다. | 
| CALL PRXPOSN | capture 버퍼의 시작 위치와 length를 반환한다. | 
| CALL PRXSUBSTR | 패턴이 일치하는 문자열의 위치와 length를 반환한다. | 
| PRXCHANGE | 지정한 패턴과 일치하는 경우 변경 작업을 수행한다. | 
| PRXMATCH | 패턴 일치여부를 검색하고, 패턴이 발견된 첫 번째 위치를 반환한다. | 
| PRXPAREN | 패턴이 일치하는 마지막 캡쳐 버퍼의 값을 반환한다. | 
| PRXPARSE | Perl 정규식 함수에 의해 이용될 Perl 정규식 표현을 정의 한다. | 
| PRXPOSN | capture 버퍼에 할당된 값을 반환한다. 캡쳐 버퍼는 prxparse를 통해 패턴 선언시 괄호를 지정하여 나눌수 있다. | 
예 제
예 제 1 :
TEXT 변수에서 ~at의 패턴을 가진 단어들을 tree로 교체한다.
* 패턴을 찾고 교체, TIMES(수행횟수)의 인수가 -1 이기 때문에 교체는 가능하면 계속 수행;
| SAS Statements | 
data _null_;
     length text $ 46;
     RegularExpressionId = prxparse('s/[crb]at/tree/');
     text = 'The woods have a bat, cat, bat, and a rat!';
     call prxchange(RegularExpressionId, -1, text);
     put text;
run;
| Results | 
The woods have a tree, tree, tree, and a tree!
예 제 2 :
cat나 Cat에 해당하는 문자열을 Mouse로 반환한다. 그와 더불어 length,
TRUNC(새변수의 length가 구변수 length보다 크면 0, 그 반대의 경우 1을 반환한다.),변환횟수를 반환한다.
| SAS Statements | 
DATA PRXCHANGE2;
      INPUT TEXT $CHAR40.;
      LENGTH NEW_TEXT $ 80;
      IF _N_ = 1 THEN MATCH = PRXPARSE("s/[Cc]at/Mouse/");
      RETAIN MATCH;
      CALL PRXCHANGE(MATCH,1,TEXT,NEW_TEXT, R_LENGTH,TRUNC,N_OF_CHANGES);
      IF TRUNC THEN PUT "Note: NEW_TEXT was truncated";
DATALINES;
The Cat in the hat
There are two cat cats in this line
;
| Results | 
     TEXT                          NEW_TEXT        
The Cat in the hat                   The Mouse in the hat         
There are two cat cats in this line   There are two Mouse Mouses in this lineR_LENGTH TRUNC  N_OF_CHANGES
      42          0              1      44          0              2
| SAS 함수(SAS Function) 리스트 링크 | 
| 엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크 | 
| SAS 데이터 스텝 구문 리스트(SAS Data Step Statement) | 
반응형
    
    
    
  'SAS > SAS 함수' 카테고리의 다른 글
| 【SAS 함수】 48. CALL PRXFREE 함수 (0) | 2018.11.20 | 
|---|---|
| 【SAS 함수】 47. CALL PRXDEBUG 함수 (0) | 2018.11.20 | 
| 【SAS 함수】 45. CALL POKELONG 함수 (0) | 2018.11.20 | 
| 【SAS 함수】 44. CALL POKE 함수 (0) | 2018.11.20 | 
| [SAS 함수] 43. CALL MODULEI 함수 (0) | 2018.11.20 | 
댓글