Tôi muốn có được trận đấu đầu tiên của một regex.
Trong trường hợp này, tôi có một danh sách:
text = 'aa33bbb44'
re.findall('\d+',text)
['33', '44']
Tôi có thể trích xuất phần tử đầu tiên của danh sách:
text = 'aa33bbb44'
re.findall('\d+',text)[0]
'33'
Nhưng điều đó chỉ hoạt động nếu có ít nhất một kết quả trùng khớp, nếu không, tôi sẽ gặp lỗi:
text = 'aazzzbbb'
re.findall('\d+',text)[0]
IndexError: danh sách chỉ mục nằm ngoài phạm vi
Trong trường hợp đó, tôi có thể xác định một hàm:
def return_first_match(text):
try:
result = re.findall('\d+',text)[0]
except Exception, IndexError:
result = ''
return result
Có cách nào để nhận được kết quả đó mà không cần xác định một hàm mới không?
len(re.findAll)==0
kiểm tra thay thế.