2011-09-05 25 views
24

Khi tôi chạy mã này:Tại sao sẽ không tái hợp lại() cho tôi bất cứ điều gì cho một nhóm phù hợp chính xác của tôi?

print re.search(r'1', '1').groups() 

tôi nhận được một kết quả của (). Tuy nhiên, .group(0) cho tôi trận đấu.

Không nên groups() cho tôi thứ gì đó có chứa kết quả khớp?

Cập nhật: Cảm ơn câu trả lời. Vì vậy, điều đó có nghĩa là nếu tôi làm re.search() mà không có nhóm con nào, tôi để sử dụng groups(0) để nhận kết quả phù hợp?

Trả lời

19

nhóm trống vì bạn không có bất kỳ nhóm chụp nào - http://docs.python.org/library/re.html#re.MatchObject.groups. nhóm (0) sẽ luôn trả về toàn bộ văn bản được đối sánh bất kể văn bản được chụp trong một nhóm hay không

Đã chỉnh sửa.

+0

Đó là trường 'nhóm', không phải phương thức –

1

Bạn không có nhóm trong regex của bạn, do đó bạn sẽ có được một danh sách rỗng (()) kết quả .

Hãy thử

re.search(r'(1)', '1').groups() 

Với khung bạn đang tạo một nhóm chụp, kết quả phù hợp với phần này của mô hình, được lưu trữ trong một nhóm.

Sau đó, bạn sẽ có được

('1',) 

kết quả.

20

Theo hiểu biết tốt nhất của tôi, .groups() trả về một bộ gồm các nhóm được ghi nhớ. I E. các nhóm trong cụm từ thông dụng được đặt trong dấu ngoặc đơn. Vì vậy, nếu bạn đã viết:

print re.search(r'(1)', '1').groups() 

bạn sẽ nhận được

('1',) 

như trả lời của bạn. Nói chung, .groups() sẽ trả về một bộ gồm tất cả các nhóm đối tượng trong cụm từ thông dụng được đặt trong dấu ngoặc đơn.

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