2017-12-12 118 views
7

Tôi muốn xóa tất cả các dấu chấm trong văn bản xuất hiện sau một ký tự nguyên âm. Làm thế nào tôi có thể làm điều đó?python - regex để xóa nếu nó xuất hiện sau b

Đây là mã Tôi ước gì có: ''

string = re.sub('[aeuio]\.', '[aeuio]', string) 

Ý nghĩa như giữ bất cứ nguyên âm bạn đã xuất hiện và loại bỏ các bên cạnh no.

Trả lời

4

Capture nguyên âm và thay thế bằng một backreference với nó:

import re 
s = "Se.hi.mo." 
s = re.sub(r'([aeuio])\.', r'\1', s) 
print(s) # => Sehimo 

Xem Python demoregex demo.

Ở đây, ([aeuio]) hình thức một capturing group\1 trong mẫu thay thế là một numbered backreference tham khảo các văn bản bắt vào Nhóm 1.

tâm việc sử dụng literals chuỗi nguyên nơi một dấu chéo ngược không tạo thành một dãy thoát: r'\1' = '\\1'.

+1

cảm ơn câu trả lời tuyệt vời của bạn và đặc biệt xe tăng cho mẹo về chuỗi thô :) –

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