2012-12-22 31 views
36

Có cách nào thay thế trực tiếp tất cả các nhóm trong cú pháp regex hay không.Python Regex ngay lập tức thay thế các nhóm

Cách bình thường:

re.match(r"(?:aaa)(_bbb)", string1).group(1) 

Tuy nhiên, tôi muốn đạt được một cái gì đó như thế này:

re.match(r"(\d.*?)\s(\d.*?)", "(CALL_GROUP_1) (CALL_GROUP_2)") 

Vì vậy, tôi chỉ muốn xây dựng chuỗi mới ngay lập tức nếu có thể bằng cách gọi nhóm các Regex chỉ bắt.

Trả lời

76

Có một cái nhìn tại re.sub:

result = re.sub(r"(\d.*?)\s(\d.*?)", r"\1 \2", string1) 

Đây là thay regex Python (thay thế) chức năng. Chuỗi thay thế có thể được lấp đầy với cái gọi là backreferences (dấu gạch chéo ngược, số nhóm) được thay thế bằng những gì đã được kết hợp bởi các nhóm. Các nhóm được tính giống như hàm group(...), tức là bắt đầu từ 1, từ trái sang phải, bằng cách mở dấu ngoặc đơn.

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