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

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

本文介绍了通过SAS中的正则表达式在字符串中进行多次搜索和替换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下宏变量:

%let text = abcpqr{work};

我需要将 替换为 \{ 替换为 {}} 通过正则表达式.

I need to replace with \, { with { and } with } by regular expression.

我尝试的代码出错了.

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

另外,如果文本是BOLDITALICITALICBOLDBOLDITALICBIIBBI",我需要将其转换为iibiiibi".

Also, if the text is "BOLDITALICITALICBOLDBOLDITALICBIIBBI", I need to convert it to "iibiiibi".

推荐答案

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

For your first problem, you should be separating each pattern into a separate PRXCHANGE. I don't think PRXCHANGE allows OR operand in it. If run this code, it will work for you:

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

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

The same principle applies to your second query:

%let text = BOLDITALICITALICBOLDBOLDITALICBIIBBI;
data _null_;
   var=prxchange("s/BOLD/b/",-1,"&text");
   var=prxchange("s/ITALIC/i/",-1,var);
   var=lowcase(var);
   put var;
run;

问候,瓦西里

这篇关于通过SAS中的正则表达式在字符串中进行多次搜索和替换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-29 03:14