我的login.txt文件包含以下條目正/負使用grep和Perl前瞻
abc def
abc 123
def abc
abc de
tha ewe
當我用perl做積極的前瞻,我得到以下結果
cat login.txt | perl -ne 'print if /(?)abc\s(?=def)/'
abc def
時我使用grep我得到以下結果
cat login.txt | grep -P '(?<=abc)\s(?=def)'
abc def
從perl和grep中產生負面的結果如下。
cat login | perl -ne 'print if /(?)abc\s(?!def)/'
abc 123
def abc
abc de
grep的結果
cat login.txt | grep -P '(?<=abc)\s(?!def)'
abc 123
abc de
perl的匹配ABC DEF用於負先行。但它不應該匹配def abc,因爲我正在檢查abc然後def模式。 grep返回正確的結果。
是我的perl模式中缺少的東西?
'(?)abc'根本不是一個積極的lookahead正則表達式;你想'(?=)abc'。仔細閱讀文檔,我承認這是一個難以置信的密集閱讀,最好在實驗時學習...... – smci