楼主: playmore
3210 6

[问答] 请问如何写保留指定单词的正则表达式 [推广有奖]

已卖:1645份资源

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16356 个
通用积分
8.6697
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1332 小时
注册时间
2007-1-11
最后登录
2025-12-1

初级学术勋章 初级热心勋章 中级热心勋章

楼主
playmore 发表于 2012-12-24 13:53:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
比如:

%let string=aa bb cc dd ee ff;

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

扫码加我 拉你入群

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

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

关键词:正则表达式 如何写 表达式 Result string 单词 表达式 如何

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

沙发
ziyenano 发表于 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;

藤椅
playmore 发表于 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;

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

谢谢各位大牛想办法

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

板凳
071029 发表于 2013-3-21 23:10:31
  1. data test;
  2. input string & $17.;
  3. st=prxchange('s/[^bb|dd]/ /',-1,string);
  4. cards;
  5. aa bb cc dd ee ff
  6. ;
  7. run;
复制代码

报纸
071029 发表于 2013-3-21 23:11:13
写了个 非宏 的 能得到 你要的结果,你在 把与宏相关的部分加上就好了

地板
071029 发表于 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 ...
  1. data test;
  2. input string & $17.;
  3. st=prxchange('s/[^bb|dd]/ /',-1,string);
  4. cards;
  5. aa bb cc dd ee ff
  6. ;
  7. run;
复制代码
写了个非宏的,能得到你要的结果,你在把与宏相关的部分加上就好了

7
071029 发表于 2013-3-21 23:14:15
playmore 发表于 2012-12-24 14:48
多谢,但是你这个还是不太对
[^bb|dd]好像是针对字符的,而不是单词
因此如果修改string如下,则不能正 ...
  1. data test;
  2. input string & $17.;
  3. st=prxchange('s/[^bb|dd]/ /',-1,string);
  4. cards;
  5. aa bb cc dd ee ff
  6. ;
  7. run;
复制代码
把与宏相关的部分加上就好了

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 20:22