2010-02-26 32 views

Trả lời

10

Đó là positive lookbehind.

(?<=a)b (lookbehind dương) phù hợp với b (và chỉ có b) trong cab, nhưng không phù hợp với bed hoặc debt.

Bạn sẽ không tìm thấy nó trong bất kỳ thủ JavaScript vì nó not supported in JavaScript regex:

Cuối cùng, hương vị như JavaScript, Ruby và Tcl không hỗ trợ lookbehind ở tất cả, mặc dù họ làm hỗ trợ lookahead.

+0

cảm ơn phản hồi nhanh. – mays

+1

FYI, kể từ phiên bản 1.9 Ruby hỗ trợ lookbehind. –

+0

+1 Để đề cập đến sự hỗ trợ của JavaScript đối với tính năng biểu thức chính quy này. – Gumbo

2

Từ các tài liệu Python re:

(?<=...)

Matches nếu vị trí hiện tại trong chuỗi được đi trước bởi một trận đấu cho ... rằng kết thúc tại vị trí hiện tại. Đây được gọi là xác nhận tích cực. (?<=abc)def sẽ tìm thấy kết quả phù hợp trong abcdef, vì giao diện sẽ sao lưu 3 ký tự và kiểm tra xem mẫu có chứa phù hợp hay không. Mẫu được chứa phải chỉ khớp với các chuỗi có độ dài cố định, nghĩa là abc hoặc a|b được phép, nhưng a*a{3,4} thì không. Lưu ý rằng các mẫu bắt đầu với xác nhận lookbehind dương sẽ không bao giờ khớp ở đầu chuỗi đang được tìm kiếm; nhiều khả năng bạn sẽ muốn sử dụng tìm kiếm() chức năng chứ không phải là trận đấu function():

>>> import re 
>>> m = re.search('(?<=abc)def', 'abcdef') 
>>> m.group(0) 
'def' 

Ví dụ này sẽ tìm kiếm một từ sau một gạch nối:

>>> m = re.search('(?<=-)\w+', 'spam-egg') 
>>> m.group(0) 
'egg' 
1

Từ regular-expressions.info:

Zero-width lookbehind tích cực. Các kết quả phù hợp ở vị trí nếu mẫu bên trong bề ngoài có thể được kết hợp ở vị trí đó (tức là ở bên trái của vị trí đó). Tùy thuộc vào hương vị regex bạn đang sử dụng, bạn có thể không thể sử dụng định lượng và/hoặc thay đổi bên trong lookbehind.

2

Nó được gọi là một cái nhìn tích cực phía sau, nó nhìn về phía sau cho ký tự x, lưu ý rằng điều này không được hỗ trợ bởi javascript. Để tham khảo trong tương lai, here's a better manual :)

+0

Cảm ơn nick cho liên kết – mays

+0

+1 Để đề cập đến sự hỗ trợ của JavaScript đối với tính năng biểu thức chính quy này. – Gumbo