DateGroup
が提供するPrettyTimeParser.parseSyntax()
には、質問に答えるために必要な情報の一部が含まれています。残りの情報は、元のテキストから判断できます。
@GrabResolver(name='sonatype-snapshots', root='https://oss.sonatype.org/content/repositories/snapshots/')
@Grab('org.ocpsoft.prettytime:prettytime-nlp:4.0.1.Final')
import org.ocpsoft.prettytime.nlp.PrettyTimeParser
def list = [
'ABC High School March 5, 2016',
'XYZ High School 08/20/2016 Gym'
]
def parser = new PrettyTimeParser()
list.collect {
[rawText: it, dateGroup: parser.parseSyntax(it).head()]
}.collect {
def before = 0..<it.dateGroup.position
def after = it.dateGroup.position + it.dateGroup.text.size()..<it.rawText.size()
[
before: it.rawText[before].trim(),
date: it.dateGroup.dates.head(),
dateString: it.dateGroup.text,
after: it.rawText[after].trim()
]
}
注: Grails で @Grabs を使用しないでください。既に依存関係が設定されている必要があります。
使い方
上記の例では、元のテキスト全体と、Pretty Time が日付を見つけた位置、および日付に解析されたテキストを使用して、2 つの範囲を作成しています。1 つは日付の前のテキスト用で、もう 1 つは日付の後のテキスト用です。日にち。次に、これら 2 つの範囲を元のテキスト全体に対して使用して、3 つのコンポーネントを抽出します。OK... 4 つ、 を追加しましたDate
。出力は次のようになります。
[
[
before:ABC High School,
date:Sat Mar 05 11:45:56 EST 2016,
dateString:March 5, 2016,
after:
],
[
before:XYZ High School,
date:Sat Aug 20 11:45:56 EDT 2016,
dateString:08/20/2016,
after:Gym
]
]