/* cody.ex9 */ /* from R. Cody "An Introduction to Perl Regular */ /* Expressions in SAS 9," */ /* http://www2.sas.com/proceedings/sugi29/265-29.pdf */ ***Primary functions: PRXPARSE, PRXNEXT; DATA FIND_NUM; IF _N_ = 1 THEN RET = PRXPARSE("/\d+/"); *Look for one or more digits in a row; 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); END; KEEP X1-X5 STRING; DATALINES; THIS 45 LINE 98 HAS 3 NUMBERS NONE HERE 12 34 78 90 ; PROC PRINT DATA=FIND_NUM NOOBS; TITLE "Listing of Data Set FIND_NUM"; RUN;