Tha*_*ela 12 regex bash perl grep negative-lookahead
我的login.txt文件包含以下条目
abc def
abc 123
def abc
abc de
tha ewe
Run Code Online (Sandbox Code Playgroud)
当我使用perl做正向前瞻时,我得到以下结果
cat login.txt | perl -ne 'print if /(?)abc\s(?=def)/'
abc def
Run Code Online (Sandbox Code Playgroud)
当我使用grep时,我得到以下结果
cat login.txt | grep -P '(?<=abc)\s(?=def)'
abc def
Run Code Online (Sandbox Code Playgroud)
来自perl和grep的负面外观结果如下.
cat login | perl -ne 'print if /(?)abc\s(?!def)/'
abc 123
def abc
abc de
Run Code Online (Sandbox Code Playgroud)
grep结果
cat login.txt | grep -P '(?<=abc)\s(?!def)'
abc 123
abc de
Run Code Online (Sandbox Code Playgroud)
perl与def abc匹配负向前瞻.但它不应该与def abc匹配,因为我正在检查abc然后def模式.grep返回正确的结果.
在我的perl模式中缺少什么?
grep不包括它对正则表达式检查的字符串中的换行符,因此abc\s当abc位于行尾时不匹配.在perl中使用chomp或使用-l命令行选项,您将看到类似的结果.
我不确定你为什么要在perl和grep regex之间进行其他更改; 是什么(?)应该完成的?
| 归档时间: |
|
| 查看次数: |
21086 次 |
| 最近记录: |