匹配成功则返回1,不成功则返回0
- %macro PrxMatch(InputString,PrxString);
- /**********************************************************************/
- /* 此宏利用正则表达式的方法检索字符串中是否包含有指定的子串。其中, */
- /* InputString是原始字符串;PrxString是指定子串的正则表达式,注意正则 */
- /* 表达式要用/.../符号括起来。 */
- /* */
- /* 最终若匹配成功,则返回1,否则返回0。 */
- /* */
- /* 另外,此宏选取自"Using PRX to Search and Replace Patterns in SAS */
- /* Programming",并稍加改动。 */
- /* */
- /* Created on 2012.4.9 */
- /* Modified on 2012.4.9 */
- /**********************************************************************/
- %local PrxStringid regrt;
- %let regrt=0;
- %let PrxStringid=%sysfunc(prxparse(&PrxString));
- %if &PrxStringid GT 0 %then %do;
- %let regrt=%sysfunc(prxmatch(&PrxStringid, &InputString));
- %end;
- %syscall prxfree(PrxStringid);
- %str(®rt) /* 最后不需要加分号 */
- %mend;
- %macro Demo();
- /* test whether there is a match or not */
- %let zip=%PrxMatch(InputString=34567-2345,PrxString=/\d{5}-\d{4}/);
- %put &zip;
- %mend;