Tôi cần phải thử một chuỗi chống lại nhiều (độc quyền - có nghĩa là một chuỗi phù hợp với một trong số họ không thể phù hợp với bất kỳ khác) regexes, và thực hiện một đoạn mã khác nhau tùy thuộc vào một trong đó nó phù hợp. Những gì tôi đang có là:Làm cách nào để tìm kiếm thông qua các đối sánh regex bằng Python?
m = firstre.match(str)
if m:
# Do something
m = secondre.match(str)
if m:
# Do something else
m = thirdre.match(str)
if m:
# Do something different from both
Ngoài sự xấu xí, mã này phù hợp chống lại tất cả regexes ngay cả sau khi nó đã xuất hiện một trong số họ (nói firstre), đó là không hiệu quả. Tôi đã cố gắng sử dụng:
elif m = secondre.match(str)
nhưng đã học bài tập đó không được phép trong câu lệnh if.
Có cách nào thanh lịch để đạt được những gì tôi muốn không?
+1 dành cho sự khiếp sợ thuần khiết. Cá nhân, tôi sẽ đưa danh sách các bộ dữ liệu ra ngoài câu lệnh for, ví dụ: 'match_functions = ((f1, re1), (f2, re2), ..)' và làm 'cho myfunc, myre trong match_functions:' – Kimvais
Đừng quên thêm "break" để lưu cố gắng khớp với phần còn lại của danh sách. –
Đã chỉnh sửa với các đề xuất của nhận xét cộng với ví dụ thực. –