-1

考虑以下 EDGAR 10-K SEC 公司备案 https://www.sec.gov/Archives/edgar/data/912382/000136231009004179/0001362310-09-004179.txt

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 中的正则表达式来捕获商业地址下的字段 STREET 1、STREET 2、CITY、STATE 和 ZIP,但不是邮寄地址。例如,对于 STREET 1,我STREET\s2\s*(.*)在 SAS 中使用,但它最终捕获了 STREET 1 作为邮寄地址。谢谢!

4

1 回答 1

0

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

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

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

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

address1=prxposn(regex_pattern, 1, edgar10);

最好的。

于 2017-06-04T05:16:59.083 回答