Tôi cần phải tìm tất cả các kết quả phù hợp trong một chuỗi cho một regex nhất định. Tôi đã sử dụng findall()
để làm điều đó cho đến khi tôi bắt gặp một trường hợp mà nó không làm những gì tôi mong đợi. Ví dụ:python - regex tìm kiếm và findall
regex = re.compile('(\d+,?)+')
s = 'There are 9,000,000 bicycles in Beijing.'
print re.search(regex, s).group(0)
> 9,000,000
print re.findall(regex, s)
> ['000']
Trong trường hợp này search()
trả về những gì tôi cần (trận đấu dài nhất) nhưng findall()
cư xử khác nhau, mặc dù các tài liệu có nghĩa nó phải giống nhau:
findall()
trận đấu tất cả các lần xuất hiện của một hoa văn, không chỉ là hình mẫu đầu tiên làsearch()
.
Tại sao hành vi lại khác?
Làm cách nào để đạt được kết quả của
search()
vớifindall()
(hoặc cái gì khác)?
thử ''([\ d,] +)'' – dawg