Tôi đã gặp sự cố nhỏ khi sử dụng Python Regex.Kết hợp nhiều mẫu regex với toán tử luân phiên?
Giả sử đây là đầu vào:
(zyx)bc
Những gì tôi đang cố gắng để đạt được bất cứ điều gì có được là giữa dấu ngoặc như một trận đấu duy nhất, và bất kỳ char bên ngoài như một trận đấu cá nhân. Kết quả mong muốn sẽ nằm dọc theo các dòng:
['zyx','b','c']
Thứ tự khớp cần được giữ lại.
Tôi đã thử có được điều này với Python 3.3, nhưng dường như không thể tìm ra Regex chính xác. Cho đến nay tôi có:
matches = findall(r'\((.*?)\)|\w', '(zyx)bc')
print(matches)
mang lại như sau:
['zyx','','']
Bất kỳ ý tưởng những gì tôi đang làm sai?
Tại sao không chỉ 'xyz | a | b'? – fge
Nó chỉ là một đầu vào mẫu. Regex có thể phân biệt giữa các trường hợp khác nhau, ví dụ như (ab) (bc) (ca), abc, (abc) (abc) (abc), hoặc (zyx) bc, vv trong khi nhận ra ký tự nào nằm trong dấu ngoặc đơn và không. –