通过SAS中的正则表达式在字符串内进行多次搜索和替换 [英] Multiple search and replace within a string through regular expression in SAS

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

问题描述

我有以下宏变量:

%let text = abc\pqr{work};

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

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

我试过的代码出错了.

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

另外,如果文本是BOLD\ITALIC\ITALICBOLD\BOLDITALIC\B\I\IB\BI",我需要将其转换为\b\i\ib\bi\b\i\ib"\bi".

Also, if the text is "BOLD\ITALIC\ITALICBOLD\BOLDITALIC\B\I\IB\BI", I need to convert it to "\b\i\ib\bi\b\i\ib\bi".

推荐答案

对于您的第一个问题,您应该将每个模式分离到单独的 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 = abc\pqr{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 = 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;

请注意,瓦西里

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

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆