如果你的日期總是格式化,像這樣: 00:00 AM,2005年
1月1日之後,你可以使用一個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值來獲取日期和時間或日期時間信息。顯然延長我的月份清單,以包含所有十二個月。
找到第二個例子,但不是第一個例子(在示例中使用datalines可以合理找到);但如果您不使用數據庫,而是使用文本文件,則可以操作記錄格式以刪除換行符和回車符,從而將兩者視爲單個記錄(並因此匹配)。查看RECFM=N
瞭解更多詳情。
來源
2012-11-30 18:18:30
Joe
你有什麼嘗試? http://mattgemmell.com/2008/12/08/what-have-you-tried/ – durron597
如果你爲你想要做的事提供更多的上下文,這將有所幫助。這聽起來像你需要從非結構化文本中提取日期和時間。 SAS可能不是最好的工具。您的解決方案是否必須完全採用SAS?或者,如果SAS是最終產品,這是否足夠?您可以查看SAS輸入和掃描。 –
你的問題並不十分清楚。請顯示您嘗試過的內容以及您期望的輸出內容。 – BellevueBob