日付が常に次のようにフォーマットされている場合: 00:00 AM, 1 January 2005
次に、perl 正規表現を使用してそれらを見つけることができます。
data test;
input @;
_prx = prxparse('/\d\d:\d\d (?:AM|PM), \d{1,2} (?:January|February|March) \d{4}/');
start = 1;
stop = length(_infile_);
call prxnext(_prx, start, stop, _infile_, position, length);
do while (position > 0);
found = substr(_infile_, position, length);
put found= position= length=;
call prxnext(_prx, start, stop, _infile_, position, length);
end;
datalines;
'random title'
random things , 00:00 AM, 1 January
2005, 555 words, (English)
'random long title'
random things , 00:00 AM, 1 January 2005, 111 words,
(English)
;;;;
run;
次に、通常の SAS 文字変数と同じように FOUND 値を使用して、日付と時刻、または datetime 情報を取得します。明らかに、月の短いリストを拡張して、12 か月すべてを含めるようにします。
これは 2 番目の例を見つけますが、最初の例は見つけません (例のデータラインを使用して合理的に見つけることはできません)。ただし、データラインを使用せずにテキスト ファイルを使用している場合は、レコード形式を操作してライン フィードとキャリッジ リターンを削除し、両方を 1 つのレコードと見なすことができます (したがって、一致します)。RECFM=N
それについての詳細を調べてください。