Regex 用SAS中的前导0替换字符串中的任何单个数字
我有一个变量,其值为t14-1-1、t14-1-1A、t14-2-1-1、t14-2-4-15A等,如下面的cards语句所述 我需要的是用前导0填充字符串中的任何一个数字,就像我们使用sas格式z2所做的那样Regex 用SAS中的前导0替换字符串中的任何单个数字,regex,sas,Regex,Sas,我有一个变量,其值为t14-1-1、t14-1-1A、t14-2-1-1、t14-2-4-15A等,如下面的cards语句所述 我需要的是用前导0填充字符串中的任何一个数字,就像我们使用sas格式z2所做的那样 data test01; input have $40.; want02=prxchange('s/(^|-)\d($|-)*/\10\2/',-1,strip(have)); want03=prxchange('s/(^|-)\d($|-)*(.+)/\10\
data test01;
input have $40.;
want02=prxchange('s/(^|-)\d($|-)*/\10\2/',-1,strip(have));
want03=prxchange('s/(^|-)\d($|-)*(.+)/\10\2/',-1,strip(have));
cards;
t14-1-1
t14-1-1A
t14-2-1-1
t14-2-1-1A
t14-2-4-15A
t14-2-4-15B
t14-2-4-16
t14-2-4-17
t14-2-4-17A
t14-2-4-17B
l16-2-9-1-1
l16-2-9-2-1
l16-2-9-2-2
;
run;
我需要的是:
t14-01-01
t14-01-01A
t14-02-01-01
t14-02-01-01A
t14-02-04-15A
t14-02-04-15B
t14-02-04-16
t14-02-04-17
t14-02-04-17A
t14-02-04-17B
l16-02-09-01-01
l16-02-09-02-01
l16-02-09-02-02
我知道我有办法用数组和扫描、长度和平移函数来实现这一点。我只是想知道这是否可以通过prxchange(正则表达式)以较少的复杂性在几个步骤中完成
我尝试了很多不同的排列和组合,但都没有成功
提前谢谢你的帮助 我不知道SAS regex Flavor是否支持LookAround,但是,如果它支持,这应该可以完成以下工作:
- 搜索:
(?我不知道SAS regex Flavor是否支持LookAround,但是,如果它支持LookAround,这应该可以完成以下工作:
- 搜索:
(?是的,他们有。
want02=prxchange('s/(?@Joe,也谢谢你的确认!):)是的,他们有。
want02=prxchange('s/(?@Joe,也谢谢你的确认!)
- 搜索: