如何在sas中提取字符串的一部分

how to extract parts of string in sas

我在一列中有多个值,我想提取 it.Lets 的一部分,考虑在我的列 A

A                        B
wwwgooglecom             google
wwwyoutubecom            youtube
wwwwwwwebcom             wwwweb
wwwmywebsiteisgoodcom    websiteisgood
www.fxr.com              fxr

我想从上面的列中提取 www 和 com A.To 实现这个我应该使用哪个 sas 函数? B 列显示预期 output.I 尝试使用 substr 函数。

a1 = substr(A,3,1);
a2 = substr(A,3,-1);
b  = cat(a1,a2);

尝试在作业的左轴上使用 INDEX() 函数和 substr()。您还可以使用 compress() 函数删除 .

data test;
format A .;
input A $;
datalines; 
wwwgooglecom
wwwyoutubecom
wwwwwwwebcom
wwwmywebsiteisgoodcom
www.fxr.com
;

data want;
set test;
B = compress(A,".");
if index(B,"www") then
    substr(B, index(B,"www"), 3) = "";
if index(B,"com") then
    substr(B, index(B,"com"), 3) = "";
B = strip(B);
run;

我建议使用 SAS PRX* 系列函数来执行 Perl 正则表达式匹配和替换。

此示例使用 PRXCHANGE 搜索:

  • 开始 www,然后是
  • 零个或一个句点 \.?,后跟
  • 一个组,它是任何东西的非贪婪匹配 (.*?),直到
  • 结束零或一个句点 \.?,然后是
  • 一个结局com

捕获的组 </code> 用作替换。</p> <pre><code>data whatsup; length a b ; input A& B&; c = prxchange('s/^www\.?(.*?)\.?com$//', 1, trim(a)); put / a= / b=/ c=; datalines; wwwgooglecom google wwwyoutubecom youtube wwwwwwwebcom wwwweb wwwmywebsiteisgoodcom websiteisgood(bad sample data?) www.fxr.com fxr run;

有替代方案可以使用 PRXMATCH