Tôi biết rằng có những câu hỏi tương tự như tôi đã được trả lời, nhưng sau khi đọc qua chúng tôi vẫn không có giải pháp mà tôi đang tìm kiếm.Các ngày phù hợp với cụm từ thông dụng bằng Python?
Sử dụng Python 3.2.2, tôi cần khớp "Tháng, Ngày, Năm" với tháng là chuỗi, Ngày là hai chữ số không quá 30, 31 hoặc 28 cho tháng 2 và 29 cho tháng 2 trong năm nhuận . (Về cơ bản một ngày REAL và hợp lệ)
Đây là những gì tôi có cho đến nay:
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)
tôi vẫn không quá quen thuộc với cú pháp regex vì vậy tôi có thể có nhân vật trong đó mà là không cần thiết (các [ ,] [] cho dấu phẩy và dấu cách giống như cách sai để đi về nó), nhưng khi tôi cố gắng khớp "Tháng 1, 26, 1991" trong tệp văn bản mẫu của tôi, việc in ra các mục trong "đối sánh" là ('Tháng một', '26', '1991', '19').
Tại sao '19' bổ sung xuất hiện ở cuối?
Ngoài ra, tôi có thể thêm hoặc thay đổi điều gì trong regex của mình để cho phép tôi xác thực ngày tháng chính xác? Kế hoạch của tôi bây giờ là chấp nhận gần như tất cả các ngày và loại bỏ chúng sau này bằng cách sử dụng các cấu trúc mức cao bằng cách so sánh nhóm ngày với nhóm tháng và năm để xem ngày đó có phải là < 31,30,29,28
Bất kỳ giúp đỡ sẽ được nhiều đánh giá cao bao gồm cả những lời chỉ trích xây dựng về cách tôi đang đi về thiết kế regex của tôi.
Tại sao bạn cần sử dụng cụm từ thông dụng? (Bây giờ bạn có hai vấn đề ...) – geoffspear
Tôi tin rằng báo @Wooble đề cập đến là 'Một số người, khi đối mặt với một vấn đề, hãy nghĩ "Tôi biết, tôi sẽ sử dụng cụm từ thông dụng." Bây giờ họ có hai vấn đề. ' và tôi có khuynh hướng đồng ý. Tôi khuyên bạn nên trích xuất một chuỗi và 2 số (có lẽ với một regex đơn giản, nhưng đơn giản chỉ bằng cách tách chuỗi trên dấu phẩy) và sau đó sử dụng datetime để kiểm tra xem ngày có hợp lệ hay không. –
Cảm ơn lời khuyên, nhưng đây là một bài tập về nhà, nơi tôi được yêu cầu làm một biểu thức để phù hợp với ngày tháng. – ahabos