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