我正在尝试使用以下正则表达式运行 grep:
(?<!key:)(?<!orKey:)(?<!isEqualToString:)\@\"[A-Za-z0-9]*\"
第一次尝试:
$ grep -r -n -H -E (?<!key:)(?<!orKey:)(?<!isEqualToString:)\@\"[A-Za-z0-9]*\" ./
-bash: !key: event not found
好的,所以我需要逃避“!”...
$ grep -r -n -H -E (?<\!key:)(?<\!orKey:)(?<\!isEqualToString:)\@\"[A-Za-z0-9]*\" ./
-bash: syntax error near unexpected token `('
好的,所以我需要转义“(”...
$ grep -r -n -H -E \(?<\!key:\)\(?<\!orKey:\)\(?<\!isEqualToString:\)\@\"[A-Za-z0-9]*\" ./
-bash: !key:)(?: No such file or directory
好的,所以我需要引用字符串?
$ grep -r -n -H -E '\(?<\!key:\)\(?<\!orKey:\)\(?<\!isEqualToString:\)\@\"[A-Za-z0-9]*\"' ./
不返回任何结果......但我尝试了一个更简单的正则表达式,它没有负面的后视断言,它运行良好......我还使用了 TextWrangler 和这个正则表达式,它确实有效,所以我只能假设我'在这里的命令行上做错了什么。
编辑:
如果我使用该-p
选项:
$ grep -r -n -H -E -P '\(?<\!key:\)\(?<\!orKey:\)\(?<\!isEqualToString:\)\@\"[A-Za-z0-9]*\"' ./
grep: conflicting matchers specified
应匹配的文件内容示例:
NSString * foo = @"bar";
不应匹配的文件内容示例:
return [someDictonary objectForKey:@"foo"];