【SAS】正規表現の取り扱い
SASでPerl仕様の正規表現を使ってみよう
SASで正規表現を使用したい場合はPRXの関数を使うことになります。
ただし、2バイト文字の取り扱いには非常に苦労しました。
(SASはShift-JISとあまり相性が良くないと思います。
そのくせ、日本語版のSAS EGとかだとExcelから読み込むデータセット名がデフォルト2バイト文字になったりするんだけど、怖いから英語名に直しています)
正規表現 - CatTail Wiki*
PRX関数を使う前の前処理
やっておくと良い前処理は次の通り
- TRIM関数とLEFT関数で前後の空白を除去
- KCOMPRESS関数で中間の空白を除去
- KTRANSLATE関数で全角英数を半角英数に置換
- TRANWRD関数で全角から半角に置換しておきたい文字列を置換
住所で3桁以上の数字を検索するときはこんな感じ
DATA; ADD = '東京都品川区広町2丁目1-306'; /** 前処理 **/ ADD_WRD = TRANWRD(KTRANSLATE(KCOMPRESS(TRIM(LEFT(ADD)), " "), "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"), "丁目", "-"); /** 3桁以上の数字が含まれるか検索 **/ ADD_NUM = PRXMATCH('/[0-9]{3,}/', ADD_WRD); RUN;