포스팅 목차
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 : 자료를 추출하고 그에 의거한 보고서를 작성하는데 사용하는 프로그래밍언어 가운데 하나이다.
관련 함수
함수명 | 함수내용 |
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변수에서 문장을 검색하여서 cat, rat, bat의 문자열의 위치와 length를 반환하여 출력한다.
SAS Statements |
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;
Results |
found=bat position=18 length=3
found=cat position=23 length=3
found=rat position=34 length=3
예 제 2 :
string변수에서 순차적으로 숫자문자를 찾아서 출력을 한다.
SAS Statements |
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
;
Results |
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 .
SAS 함수(SAS Function) 리스트 링크 |
엑셀(EXCEL)과 SAS 함수(SAS Function) 비교 리스트 링크 |
SAS 데이터 스텝 구문 리스트(SAS Data Step Statement) |
반응형
'SAS > SAS 함수' 카테고리의 다른 글
【SAS 함수】 51. CALL PRXSUBSTR 함수 (0) | 2018.11.21 |
---|---|
【SAS 함수】 50. CALL PRXPOSN 함수 (0) | 2018.11.20 |
【SAS 함수】 48. CALL PRXFREE 함수 (0) | 2018.11.20 |
【SAS 함수】 47. CALL PRXDEBUG 함수 (0) | 2018.11.20 |
【SAS 함수】 46. CALL PRXCHANGE 함수 (0) | 2018.11.20 |
댓글