Sử dụng ABC
và XYZ
như neo với nhìn đằng sau và tìm kiếm-trước khẳng định:
(?<=ABC).*?(?=XYZ)
Khẳng định (?<=...)
nhìn đằng sau chỉ phù hợp tại địa điểm trong văn bản đã được đi trước bởi ABC
. Tương tự, (?=XYZ)
đối sánh tại vị trí theo sau là XYZ
. Họ cùng nhau tạo thành hai neo giới hạn biểu thức .*
, phù hợp với bất kỳ thứ gì.
Bạn có thể tìm thấy tất cả các mảnh neo như văn bản với re.findall()
:
for matchedtext in re.findall(r'(?<=ABC).*?(?=XYZ)', inputtext):
Nếu ABC
và XYZ
là biến, bạn muốn sử dụng re.escape()
(để ngăn chặn bất kỳ nội dung của họ khỏi bị hiểu là cú pháp biểu thức chính quy) vào chúng và Nội suy:
re.match(r'(?<={}).*?(?={})'.format(abc, xyz), inputtext)
Nguồn
2013-06-17 15:41:50
Cảm ơn rất nhiều @Martijin Nó hoạt động: D – sgp