使用prxmatch匹配以特定字符结尾的字符串

时间:2017-06-09 09:53:46

标签: regex sas

匹配以特定字符结尾的字符串

我正在尝试创建一个新变量,指示字符串是否以某个字符结尾。

下面是我尝试过的,但是当运行此代码时,变量ending_in_e全部为零。我希望像“Alice”和“Jane”这样的名字可以与下面的代码匹配,但它们不是:

proc sql;
select *,
case 
when prxmatch("/e$/",name)  then 1
     else 0
end as ending_in_e
from sashelp.class
;quit;

2 个答案:

答案 0 :(得分:3)

你应该考虑到这样一个事实:在SAS中,字符串是 char 类型,如果实际值比缓冲区短,则空格会被添加到字符串end。

trim字符串:

prxmatch("/e$/",trim(name))

或添加空白模式:

prxmatch("/e\s*$/",name)
            ^^^

匹配0个或更多的空格。

答案 1 :(得分:1)

SAS字符变量是固定长度的。因此,您需要修剪尾随空格或将它们包含在正则表达式中。

正则表达式很强大,但它们可能会让一些人感到困惑。对于这样一个简单的模式,使用更简单的函数可能更清楚。

proc print data=sashelp.class ;
  where char(name,length(name))='e';
run;

enter image description here