Tôi đã dành một chút thời gian để học Biểu thức chính quy, nhưng tôi vẫn không hiểu cách thủ thuật sau đây hoạt động như thế nào khớp hai từ theo thứ tự khác nhau.Kết hợp hai từ theo thứ tự tùy ý bằng cách sử dụng regex
import re
reobj = re.compile(r'^(?=.*?(John))(?=.*?(Peter)).*$',re.MULTILINE)
string = '''
John and Peter
Peter and John
James and Peter and John
'''
re.findall(reobj,string)
kết quả
[('John', 'Peter'), ('John', 'Peter'), ('John', 'Peter')]
(https://www.regex101.com/r/qW4rF4/1)
Tôi biết phần (?=.*)
được gọi Positive Lookahead
, nhưng làm thế nào nó hoạt động trong tình huống này?
Mọi lời giải thích?
Có rất nhiều giải thích về cách hoạt động của lookaheads. Có lẽ bạn nên đọc một vài trong số họ thay vì yêu cầu chúng tôi viết * một số khác * chỉ dành cho bạn. (Nói cách khác: Đây là một câu hỏi rất cơ bản về một chủ đề được giải thích rõ ràng và được giải thích rõ ràng. Tôi đánh giá cao tính năng này không rõ ràng với người mới bắt đầu, nhưng không có sự giải thích về mọi mức độ kỹ thuật có thể.) – Tomalak
Tôi đã đọc một số hướng dẫn về 'Lookahead tích cực', nhưng tôi không nhớ bất cứ điều gì giải thích điều này. Bạn có thể cung cấp cho tôi một số liên kết hữu ích không? – Aaron
http://www.regular-expressions.info/lookaround.html – Tomalak