2011-10-05 4 views
1

Problème: Étant donné un document texte non structuré, recherchez des sous-chaînes de date ou de date/heure.Stratégies pour trouver des dates ou des dates/heures dans un document texte?

Mes pensées actuelles sont à la recherche de formats connus avec un tas de regex qui se sent grossièrement kludgy, coûteux et sujettes à des erreurs :-)

C'est le genre de document dont je parle:

Bacon ipsum dolor sit amet de surlonge reprehenderit côtes levées aute. Ullamco consequat mandrin porte-greffe, laboris do pastrami 10 janvier 1980 est venison shankle court 1-20-1980 longe bresaola corned beef. Côtes de bœuf 28/2/2001 tri-tip est cupidatat, excepteur qui non pastrami.

Je pense que je ne suis pas la première personne à résoudre ce problème, et j'espère que le code résultant est enterré dans un certain projet open source, je ne sais pas ...

pensées?

+0

Quel est le problème avec l'aide d'un regex pour le faire? Pourquoi pensez-vous que ce serait kludgy et ou cher ou sujettes à des erreurs? C'est ce que regex a été fait pour ... – hspain

+0

Votre exemple m'a donné faim. –

Répondre

0

Ceci est un peu une heuristique ad-hoc - mais peut-être tokenize d'abord?

Vous pouvez recogize les jetons suivants

  • "junk" (par défaut, quoi que ce soit pas comme une partie de date)
  • dddd (4 chiffres - généralement un an)
  • dd (2 chiffres - jour mois ou année)
  • d (1 chiffre - jour ou mois)
  • dd_st
  • dd_th (et variations sur le nombre de chiffres)
  • dd_rd
  • monthname

etc etc

Chaque jeton peut avoir plusieurs interprétations (par exemple d est le mois ou le jour) et date est une séquence de 3 jetons où vous pouvez sélectionner un de chaque année, mois, jour (dans l'ordre que vous souhaitez autoriser).

L'idée ici est d'accepter beaucoup plus syntaxes que vous obtiendriez avec regex, si cela vous avez l'intention ...

Questions connexes