在SAS中使用正则表达式拉字符串

问题描述 投票:0回答:2

我有这样的字符串:

HAHDFKDLFDAFHDKFJL/ABCD//NAME/I WANT TO EXTRACT THIS/JJJJ//NAME/blah blah blah

在其他时候,字符串看起来像这样

HAHDFKDLFDAFHDKFJL/ABCD//NAME/I WANT TO EXTRACT THIS

我要拉字符串I WANT TO EXTRACT THIS

我已建立正则表达式以提取第一个示例,但无法弄清楚如何提取第二个示例(当我要提取的字符串后没有'/'时的情况)。有人可以帮助我调整代码以拉出第二个示例吗?

re = prxparse('/\/ABCD\/\/NAME\/(.*?)\/(.*?)\//s');
if prxmatch(re, string_data) then 
do;
    extracted_string = prxposn(re, 1, string_data);
end;
regex sas extract text-extraction
2个回答
1
投票

尝试此正则表达式:

set test;
re = prxparse('/\/ABCD\/\/NAME\/(.*?)(\/|$)/s');
if prxmatch(re, string_data) then 
do;
    extracted_string = prxposn(re, 1, string_data);
end;

0
投票

您可以用$匹配行尾

re = prxparse('/\/ABCD\/\/NAME\/(.*?)$/s');

此匹配两种情况:

re = prxparse('/\/ABCD\/\/NAME\/(.*?)($|\/)/s');
© www.soinside.com 2019 - 2024. All rights reserved.