2017-05-06 45 views
-1

考虑以下EDGAR 10-K SEC公司申报 https://www.sec.gov/Archives/edgar/data/912382/000136231009004179/0001362310-09-004179.txtSAS正则表达式的代码从10-K公司文件

BUSINESS ADDRESS: 
    STREET 1:  107 N PENNSYLVANIA ST 
    STREET 2:  STE 600 
    CITY:   INDIANAPOLIS 
    STATE:   IN 
    ZIP:   46204 
    BUSINESS PHONE:  3172619000 

MAIL ADDRESS: 
    STREET 1:  107 N PENNSYLVANIA ST 
    STREET 2:  STE 600 
    CITY:   INDIANAPOLIS 
    STATE:   IN 
    ZIP:   46204 

我需要在SAS正则表达式来捕获场街1号,街道2捕捉商家地址,CITY,STATE和ZIP下的商业地址,但不是邮寄地址。例如,对于STREET 1,我在SAS中使用了STREET\s2\s*(.*),但它最终捕获邮件地址的STREET 1。谢谢!

+0

请显示您到目前为止所尝试的内容。 SO不是代码写入服务。 – Reeza

回答

0

这个正则表达式应该可以工作。

BUSINESS ADDRESS:\s*STREET\s1:\s*(.*)\s*STREET\s2:\s*(.*) 

您可以继续该模式,以便在新括号中捕获所需的每个部分。基本上,你只是确保你在公司地址后得到第一个答案。您使用的模式的问题是它能够在两个单独的位置匹配模式,并且正则表达式引擎将只返回它找到的最后一个匹配。因此,你必须在其中指定一个你想要的东西。

在SAS中,您可以使用prxposn函数和第二个参数来指示要捕获的捕获缓冲区(括号)。例如。

address1=prxposn(regex_pattern, 1, edgar10); 

最好。