tập tin login.txt của tôi chứa mục sauPositive/Negative lookahead với grep và perl
abc def
abc 123
def abc
abc de
tha ewe
khi tôi làm lookahead tích cực sử dụng perl, tôi nhận được kết quả sau
cat login.txt | perl -ne 'print if /(?)abc\s(?=def)/'
abc def
khi tôi sử dụng grep tôi nhận được kết quả sau đây
cat login.txt | grep -P '(?<=abc)\s(?=def)'
abc def
kết quả tìm kiếm tiêu cực như sau từ perl và grep.
cat login | perl -ne 'print if /(?)abc\s(?!def)/'
abc 123
def abc
abc de
kết quả grep
cat login.txt | grep -P '(?<=abc)\s(?!def)'
abc 123
abc de
perl phù hợp def abc cho lookahead tiêu cực. nhưng nó không nên phù hợp với def abc, như tôi đang kiểm tra abc sau đó def mẫu. grep trả lại kết quả chính xác.
có gì đó thiếu trong mẫu hình perl của tôi?
'(?) Abc' không phải là một regex lookahead tích cực ở tất cả; bạn muốn '(? =) abc'. Đọc lại các tài liệu chặt chẽ hơn, tôi sẽ thừa nhận đó là một đọc vô cùng dày đặc và được học tốt nhất trong khi thử nghiệm ... – smci