вытащить строку с помощью регулярных выражений в SAS - PullRequest
0 голосов
/ 08 октября 2019

У меня есть такая строка:

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;

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Попробуйте это регулярное выражение:

set test;
re = prxparse('/\/ABCD\/\/NAME\/(.*?)(\/|$)/s');
if prxmatch(re, string_data) then 
do;
    extracted_string = prxposn(re, 1, string_data);
end;
0 голосов
/ 08 октября 2019

вы можете сопоставить конец строки с $

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

Это соответствует двум случаям:

re = prxparse('/\/ABCD\/\/NAME\/(.*?)($|\/)/s');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...