SAS:如何删除两个特定位置之间的单词?

SAS:如何删除两个特定位置之间的单词?,sas,Sas,数据: 如何删除\u试验21\u和\u试验9\u 我所做的是找到第一个和第二个的位置。然后我想从第一个和第二个压缩。但压缩功能不可用于执行此操作。怎么做 Hell_TRIAL21_o World Good Mor_Trial9_ning Text=“地狱审判21世界早安审判9” 请注意,变量var的长度可能不适合您的情况。请记住进行相应调整 Text=“地狱审判21\u o世界早上好” 请注意,变量var的长度可能不适合您的情况。请记住进行相应调整 PERL正则表达式是识别这类字符串的好方法c

数据:

如何删除
\u试验21\u
\u试验9\u

我所做的是找到第一个和第二个的位置。然后我想从第一个和第二个压缩。但压缩功能不可用于执行此操作。怎么做

Hell_TRIAL21_o World
Good Mor_Trial9_ning
Text=“地狱审判21世界早安审判9”

请注意,变量
var
的长度可能不适合您的情况。请记住进行相应调整

Text=“地狱审判21\u o世界早上好”


请注意,变量
var
的长度可能不适合您的情况。请记住进行相应调整

PERL正则表达式是识别这类字符串的好方法
call prxchange
是删除相关字符的函数。创建搜索和替换参数之前需要
prxparse

我在这里使用了
modify
来修改现有的数据集,显然您可能希望使用
set
写入新的数据集并首先测试结果

var= catx("",scan(text,1,"_"),"__",scan(text,3,"_"),"_", scan(text,5,"_"))
或者,要创建新变量和数据集,只需使用
prxchange
(不需要
prxparse


PERL正则表达式是识别这类字符串的好方法
call prxchange
是删除相关字符的函数。创建搜索和替换参数之前需要
prxparse

我在这里使用了
modify
来修改现有的数据集,显然您可能希望使用
set
写入新的数据集并首先测试结果

var= catx("",scan(text,1,"_"),"__",scan(text,3,"_"),"_", scan(text,5,"_"))
或者,要创建新变量和数据集,只需使用
prxchange
(不需要
prxparse

很好的解决方案。函数的作用是:添加在第一个位置定义的分隔符,同时删除前导空格和尾随空格。因此,如果您不需要任何分隔符,那么应该使用CATS()函数,而不是将分隔符定义为“”。还要记住,cat函数(cat catt cats catx)的标准长度为200。无论如何,Yumi,你可以通过几种方式达到同样的效果。看看sas中字符串函数的完整列表。这是一个很好的解决方案。函数的作用是:添加在第一个位置定义的分隔符,同时删除前导空格和尾随空格。因此,如果您不需要任何分隔符,那么应该使用CATS()函数,而不是将分隔符定义为“”。还要记住,cat函数(cat catt cats catx)的标准长度为200。无论如何,Yumi,你可以通过几种方式达到同样的效果。查看sas中字符串函数的完整列表。
data have;
input string $ 30.;
datalines;
Hell_TRIAL21_o World
Good Mor_Trial9_ning
;
run;


data have;
modify have;
regex = prxparse('s/_.*_//'); /* identify and remove anything between 2 underscores */
call prxchange(regex,-1,string);
run;
data want;
set have;
new_string = prxchange('s/_.*_//',-1,string);
run;