SAS PRXCHANGE报表评估

时间:2018-07-06 23:11:54

标签: regex sas

我正在努力获取如何获取PRXCHANGE语句来评估我希望的方式。我想删除标签集之间的文本。虽然在仅出现一次模式时它可以正常工作,但在多次出现模式时它不会返回我想要的内容,我相信这与我使用'。*'有关。

以下是一些示例字符串和我当前的正则表达式:

data test;
in = 'keep text 1 <TAG> drop text 1 </TAG> keep text 2 <TAG> drop text 2 </TAG> keep text 3';
output;
in = 'This one works! <TAG> drop text 1 </TAG>';
output;
in = '<TAG> drop text 1 </TAG> This one works as well';
output;
in = 'This one works fine too! <TAG> drop text 1 </TAG> This works just dandy';
output;
run;  

data test;  
set test;
out = prxchange("s/<TAG>.*<\/TAG>//i", -1, in);
run;

这将导致以下字符串:

keep text 1  keep text 3
This one works!
This one works as well
This one works fine too!  This works just dandy

第一个字符串“保留文本1保留文本3”是有问题的结果。我想找回的是:

keep text 1 keep text 2 keep text 3

我认为问题与'。*'组件有关,导致整个字符串被消耗,然后回溯以查找模式的其余部分,但是在此字符串中有模式的两个实例,但是正则表达式不是那样的。不幸的是,介于两者之间的文本可以是任何东西:可以是一个单词或一个段落,所以我不能假设中间是什么,无论是开头还是结尾都是什么。

0 个答案:

没有答案