全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3140 6
2012-12-24
比如:

%let string=aa bb cc dd ee ff;

现在我想仅保留bb和dd,即得到result=bb dd,请问该怎么写正则表达式,谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-12-24 14:25:49
%let string=aa bb cc dd ee ff;
%let id=%sysfunc(prxparse(s/[^bb|dd]/$1/));
%let test=%sysfunc(prxchange(&id,-1,&string));
%put &test;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-12-24 14:48:05
ziyenano 发表于 2012-12-24 14:25
%let string=aa bb cc dd ee ff;
%let id=%sysfunc(prxparse(s/[^bb|dd]/$1/));
%let test=%sysfunc(prxc ...
多谢,但是你这个还是不太对
[^bb|dd]好像是针对字符的,而不是单词
因此如果修改string如下,则不能正常运行

%let string=ab bc cd ef;
%let id=%sysfunc(prxparse(s/[^bc|ef]/$1/));
%let test=%sysfunc(prxchange(&id,-1,&string));
%put &test;

另外还想要解决空格的问题,需要最终结果保留单词间的空格

谢谢各位大牛想办法

我这么做的原因是通过宏变量作为宏参数,且有固定的几个选项,每次输入可以选择其中一个或多个,输入对则保留,输错则无视。可行的办法应该还有很多,但我觉得用正则是比较有效率的办法
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-3-21 23:10:31
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-3-21 23:11:13
写了个 非宏 的 能得到 你要的结果,你在 把与宏相关的部分加上就好了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-3-21 23:12:28
ziyenano 发表于 2012-12-24 14:25
%let string=aa bb cc dd ee ff;
%let id=%sysfunc(prxparse(s/[^bb|dd]/$1/));
%let test=%sysfunc(prxc ...
复制代码
写了个非宏的,能得到你要的结果,你在把与宏相关的部分加上就好了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群