通过SAS中的正则表达式在字符串中进行多次搜索和替换

时间:2015-09-02 04:55:07

标签: regex sas

我有以下宏变量:

$man 2 msgctl

我需要将%let text = abc\pqr{work}; 替换为\,将\\替换为{,将\{替换为}的正则表达式。

我试过的代码会出错。

\}

此外,如果文字是“BOLD \ ITALIC \ ITALICBOLD \ BOLDITALIC \ B \ I \ IB \ BI”,我需要将其转换为“\ b \ i \ ib \ bi \ b \ i \ ib \ bi ”。

抱歉没有提供我最初尝试的代码。

提前致谢。

1 个答案:

答案 0 :(得分:1)

对于您的第一个问题,您应该将每个模式分成单独的PRXCHANGE。我不认为PRXCHANGE允许OR操作数。如果运行此代码,它将适用于您:

%let text = abc\pqr{work};
data _null_;
   var=prxchange("s/\\/\\\\/",-1,"&text");
   var=prxchange("s/\{/\\\{/",-1,var);
   var=prxchange("s/\}/\\\}/",-1,var);
   put var;
run;

同样的原则适用于您的第二个查询:

%let text = BOLD\ITALIC\ITALICBOLD\BOLDITALIC\B\I\IB\BI;
data _null_;
   var=prxchange("s/BOLD/b/",-1,"&text");
   var=prxchange("s/ITALIC/i/",-1,var);
   var=lowcase(var);
   put var;
run;

Regads, 瓦西里