3

SAS 9.3を使用して、「。」の間の各文字列の部分を抽出したいと思います。(ドット)およびドットに続く'"'(二重引用符)。たとえば、下の1行目の結果はf2015_cnt_cont_lineになります。

      <characteristic abc="[2015].f2015_cnt_cont_line" xxxxxxxx="8129" />
      <characteristic abc="[2015].f2015_dbt_cont_line" xxxxxxxx="8134" />
      <characteristic abc="[2015].f2015_ctl_tot_acct_bal" xxxxxxxx="8133" />
      <characteristic abc="[2015].f2015_cnt_comb_line" xxxxxxxx="8118" />
      <characteristic abc="[2015].f2015_dbt_comb_line" xxxxxxxx="8138" />

誰かが私が使用できる例を持っていますか?

ありがとうダン

4

4 に答える 4

4

パターンに一致する正規表現は\.(.*?)\". これは次のことを意味します: ドット (特殊文字)、次に任意の文字 (? は「貪欲」ではないため、できるだけ少ない文字をキャプチャします)、次に引用符を見つけます。

SAS ドキュメントのこの例を使用すると、次のように動作するはずです。

data test;
   set _your_data_set;
   retain re;
   if _N_ = 1 then re = prxparse('/\.(.*?)\"/');
   if prxmatch(re, var) then result = prxposn(re, 1, var);
run;

(これは、データが という変数にあることを前提としていますvar。)

于 2012-06-14T23:07:16.367 に答える
3

PRX 関数を使用する代わりに、次のようなもので十分です。

text=scan(scan(line,2,"."),1,'"');

これは、テキストが line という変数に格納されていることを前提としています。

于 2012-06-14T21:57:26.657 に答える
2

1 つの方法を次に示します。

inner = SCAN(SUBSTR(line,INDEX(line,'.')+1),1,'"');

内部の SUBSTR 関数は、最初のドットの後の列にスキップします。外側の SCAN 関数は、二重引用符で区切られた最初の単語を返します。

于 2012-06-14T21:53:01.913 に答える