2015-01-14 14 views
6

Giả sử từ sau chuỗiRegex, chọn trận đấu gần nhất

BLA text text text text text text BLA text text text text LOOK text text text BLA text text BLA 

Những gì tôi muốn làm là để trích xuất văn bản từ BLA để nhìn, nhưng BLA đó là gần nhất để xem xét. I E. Tôi muốn nhận được

BLA text text text text LOOK 

Tôi nên làm điều đó bằng cách sử dụng cụm từ thông dụng như thế nào? Tôi có một giải pháp hoạt động, nhưng nó không hiệu quả.

BLA(?!.*?BLA.*?LOOK).*?LOOK 

Có cách nào tốt hơn và hiệu quả hơn để đạt được kết hợp mẫu này không?

Điều tôi muốn làm là: Tôi muốn kết hợp BLA, sau đó chuyển tiếp cho đến khi một trong hai lookahead dương tính với LOOK hoặc lookahead tiêu cực với BLA. Nhưng tôi không biết cách nào để diễn đạt một cách bình thường.

Là động cơ tôi sử dụng lại trong python.

Trả lời

0

chỉ cần tìm văn bản giữa LOOK và BLA BLA mà không

In : re.search(r'BLA [^(BLA)]+ LOOK', 'BLA text text text text text text BLA text text text text LOOK text text text BLA text text BLA').group() 
Out: 'BLA text text text text LOOK' 

:-)

+0

Ồ ... thật dễ dàng :-) Cảm ơn! – overseas

+0

vấn đề là: Nó không hoạt động nếu tôi sử dụng biểu thức, ví dụ: trên Văn bản văn bản văn bản BLA văn bản văn bản văn bản BLA Văn bản văn bản văn bản BLA văn bản BLA vì vậy nếu có chữ L giữa BLA và XEM – overseas

+0

Có vẻ như bạn cần sửa đổi kiến ​​thức biểu thức chính quy. Trở thành '[^ (BLA)] +' có nghĩa là nó không khớp với 'BLA' thay vì không khớp' B' hoặc '(' hoặc 'L' vv – nu11p01n73R

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