2013-04-16 38 views

Trả lời

6

Giải pháp tầm thường:

>>> re.findall("(100%|[0-9][0-9]%|[0-9]%)","89%") 
['89%'] 

giải pháp đẹp thêm:

>>> re.findall("(100%|[0-9]{1,2}%)","89%") 
['89%'] 

Giải pháp đẹp nhất:

>>> re.findall("(?:100|[0-9]{1,2})%","89%") 
['89%'] 
10
>>> re.findall("(?:100|[0-9][0-9]|[0-9])%", "89%") 
['89%'] 

Khi có nhóm chụp findall lợi nhuận chỉ captu phần màu đỏ. Sử dụng ?: để ngăn các dấu ngoặc đơn không bị nhóm chụp.

+0

Thay đổi '100 | [0-9] [0-9] | [0-9]' thành '\ d {1,3}' thay đổi ý định của mẫu? – Bryan

2

Sử dụng một nhóm bên ngoài, với các nhóm bên trong một tổ chức phi chụp nhóm:

>>> re.findall("((?:100|[0-9][0-9]|[0-9])%)","89%") 
['89%'] 
Các vấn đề liên quan