2011-01-15 32 views
186

Trong chương trình tôi đang viết, tôi có Python sử dụng hàm re.search() để tìm các kết quả phù hợp trong một khối văn bản và in kết quả. Tuy nhiên, chương trình sẽ thoát khi nó tìm thấy kết quả khớp đầu tiên trong khối văn bản.Làm cách nào để tìm tất cả các kết quả phù hợp với cụm từ thông dụng trong Python?

Làm cách nào để thực hiện việc này lặp đi lặp lại khi chương trình không dừng cho đến khi TẤT CẢ các kết quả phù hợp đã được tìm thấy? Có một chức năng riêng biệt để làm điều này?

+0

[REs đệ quy] (http://web.archive.org/web/20030206032122/http://www.puffinry.freeserve.co.uk/regex-extension.html) là một con thú khác. Bạn muốn lặp lại tìm kiếm. – outis

Trả lời

332

Sử dụng re.findall hoặc re.finditer để thay thế.

re.findall(pattern, string) trả về danh sách các chuỗi phù hợp.

re.finditer(pattern, string) trả về trình lặp trên MatchObject đối tượng.

+2

'finditer' là những gì tôi đang tìm kiếm. Tôi ngạc nhiên rằng một trong những trả về đối tượng Match và các chuỗi khác. Tôi đã mong đợi để sử dụng một 'match_all' hoặc' match_iter' chức năng. – dsclose

+7

TUYÊN BỐ TỪ CHỐI: những người sẽ chỉ tìm thấy ** không trùng nhau ** phù hợp với –

+0

@ AntoineLizée, làm thế nào để tìm lặp lại VỚI trùng lặp? – Raksha

Các vấn đề liên quan