0

SQLデータベースの非常に大きなテキストサンプルからできるだけ多くの日付(YMD、YM、またはYだけ)を取得しようとしています。データベース内のすべてのテキストは平易な英語であり、多数が含まれています。私が探しているのは、これらの日付をできるだけ多く見つけ、それらを日付として認識し、それらが表す日付と見つかった文字列を引き出すことです。「1980年代」や「1962年が始まり」などの事例をカバーしながら、1985年1月23日のような事例をカバーできるすべての可能な正規表現を考える以外に、これを回避する方法はありますか。すでにこれを引き受けたプロジェクトの例はありますか?ありがとう!

4

2 に答える 2

1

次の組み合わせが必要なようです。

1)部分文字列postgresql関数を使用して、正規表現を使用して日付から部分文字列を取得します。

substring(string from pattern)
substring('foobar' from '%#"o_b#"%' for '#')   oob

2)考えられるすべての日付形式で作業します。有効な日付に一致する正規表現を開始点にすることができます。

おそらく、この翻訳を行うために独自のユーザー定義関数を作成することができます。それを私たちと共有することを忘れないでください;)

*編集済み*

これが1回限りの仕事である場合。日付をエクスポートし、python parsedatetimeライブラリを使用して日付を解析してから、データベースに戻ることができます。

parsedatetime is able to parse, for example, the following:

August 25th, 2008
25 Aug 2008
Aug 25 5pm
5pm August 25
next saturday
tomorrow
next thursday at 4pm
at 4pm
eod
tomorrow eod
eod tuesday
eoy
eom
in 5 minutes
5 minutes from now
5 hours before now
2 hours before noon
2 days from tomorrow
于 2012-08-05T14:37:44.873 に答える
0

それはあなたの問題の将来の複雑さ(例えば、より多くのフォーマットやカバーする他の可能性)に依存しますが、一般的にあなたが考えるほとんどの場合を処理するはずのいくつかの時間的タガーをチェックできると思います。実際にルールも使用するStanfordSUTimeから始めることができます。

于 2012-08-06T12:17:55.817 に答える