2013-02-26 29 views
5

Tôi đang cố gắng sử dụng regex python trên một chuỗi URL.Python regex - sự khác biệt giữa tìm kiếm và tìm tất cả

id= 'edu.vt.lib.scholar:http/ejournals/VALib/v48_n4/newsome.html' 
>>> re.search('news|ejournals|theses',id).group() 
'ejournals' 
>>> re.findall('news|ejournals|theses',id) 
['ejournals', 'news'] 

Dựa trên tài liệu ở số http://docs.python.org/2/library/re.html#finding-all-adverbs, tìm kiếm phù hợp với tất cả các chuỗi có thể có trong chuỗi.

Tôi tự hỏi tại sao 'tin tức' không bị bắt với tìm kiếm mặc dù nó được khai báo đầu tiên trong mẫu.

Tôi có sử dụng mẫu không đúng không? Tôi muốn tìm kiếm nếu bất kỳ từ khóa nào trong số đó xuất hiện trong chuỗi.

Trả lời

1

Bạn đang nghĩ về điều đó ngược. Regex đi qua chuỗi đích tìm kiếm "news" HOẶC "ejournals" HOẶC "theses" và trả về chuỗi đầu tiên tìm thấy. Trong trường hợp này, "ejournals" xuất hiện đầu tiên trong chuỗi đích.

+0

Cảm ơn bạn. Tệ của tôi, tôi không nghĩ về điều này. – kich

2

Chức năng re.search() dừng sau lần xuất hiện đầu tiên thỏa mãn điều kiện của bạn, không phải tùy chọn đầu tiên trong mẫu.

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