有没有办法转换字符串模式,如下图所示?

时间:2013-04-22 20:13:08

标签: sql regex perl sas

enter image description here

尝试将上表中的“当前”模式转换为数据集中的“将其转换为”模式... 示例显示在每个列的下两列中.... 我尝试了不同的方法,但我无法获得所需的输出.... 以下是获取输入数据的代码....

    data Current;
Input Currently :$40.;
Datalines;
HiKumar"^TM1()^",test
HiKumar"^TM2()^"
HiKumar^TM3()^HiKumar
HiKumar^f(‘VARNAME’).any(‘#’)^
HiKumar^f(‘VARNAME’)^
HiKumar^f(‘VARNAME’).get()==’#’^
HiKumar^f(‘VARNAME’)==’#’^
HiKumar^f(‘VARNAME’).toNumber()^
HiKumar^f(‘VARNAME’).toString()^
HiKumar^f(‘VARNAME’).toString().toLowerCase()^
HiKumar^f(‘VARNAME’).toString().toUpperCase()^
HiKumar^f(‘IFCONDITION’)?’THENTEXT’:’ELSETEXT’^
HiKumar<br>
HiKumar<br/>
HiKumar<br />
HiKumar^MobileHeader()^
HiKumar^MobileFooter()^
HiKumar<u>
HiKumar</u>
HiKumar&nbsp
;
run;

1 个答案:

答案 0 :(得分:1)

我会选择正则表达式。你需要几个;这是一个开始。 (报价字符可能会被网络浏览器和/或SAS混淆,所以我建议手动更换它们,而不是相信复制/粘贴,如果它们最初不起作用的话)。这只能识别第四行,但是可以为其他行构建类似的正则表达式(有些可以用于多行)。

data want;
set current;
rx_1 = prxparse("/\^f\(‘(\w*?)’\)\^/");
rc_1 = prxmatch(rx_1,currently);
if rc_1 ne 0 then have = prxposn(rx_1,1,currently);
run;