So che ci sono domande simili alle mie a cui è stata data una risposta, ma dopo averli letti non ho ancora la soluzione che sto cercando.Date di corrispondenza con espressioni regolari in Python?
Utilizzando Python 3.2.2, devo abbinare "Mese, giorno, anno" con il mese come stringa, Giorno con due cifre non superiori a 30, 31 o 28 per febbraio e 29 per febbraio in un anno bisestile . (In pratica un vero appuntamento e XHTML)
Questo è quello che ho finora:
pattern = "(January|February|March|April|May|June|July|August|September|October|November|December)[,][ ](0[1-9]|[12][0-9]|3[01])[,][ ]((19|20)[0-9][0-9])"
expression = re.compile(pattern)
matches = expression.findall(sampleTextFile)
Io non sono ancora troppo familiarità con la sintassi regex così che io possa avere caratteri in là che sono inutili (il [ ,] [] per la virgola e gli spazi si sente come il modo sbagliato per farlo), ma quando provo a far corrispondere "January 26, 1991" nel mio file di testo di esempio, la stampa degli elementi in "partite" è ('Gennaio', '26', '1991', '19').
Perché il "19" in più compare alla fine?
Inoltre, quali cose potrei aggiungere o modificare nella mia espressione regolare che mi consenta di convalidare correttamente le date? Il mio piano adesso è quello di accettare quasi tutte le date e eliminarle successivamente usando costrutti di alto livello confrontando il raggruppamento del giorno con il mese e il raggruppamento dell'anno per vedere se il giorno dovrebbe essere < 31,30,29,28
Qualsiasi l'aiuto sarebbe molto apprezzato includendo critiche costruttive su come sto andando a progettare la mia espressione regolare.
Perché hai bisogno di usare un'espressione regolare? (Ora hai due problemi ...) – geoffspear
Credo che la citazione @Wooble si riferisca a "Alcune persone, quando si trovano di fronte a un problema, pensano" Lo so, userò le espressioni regolari ". Ora hanno due problemi. ' e sono propenso a essere d'accordo. Raccomando di estrarre una stringa e 2 numeri (magari con un'espressione regolare semplice e semplice, ma più probabilmente semplicemente dividendo la stringa in virgola) e quindi utilizzando datetime per verificare se la data è valida. –
Grazie per il consiglio, ma questo è un compito a casa dove sono obbligato a fare un'espressione per abbinare le date. – ahabos