gpt4 book ai didi

regex - 我怎样才能在 bash 中正确地转义这个正则表达式?

转载 作者:行者123 更新时间:2023-11-29 09:08:19 27 4
gpt4 key购买 nike

我正在尝试使用以下正则表达式运行 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 `('

好的,所以我需要转义 "("s...

$ 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"];

最佳答案

它的核心是您需要用'' 将整个字符串引起来。 (如果你用 "" 括起来 ! 会让你伤心)。然后你只需要在你的正则表达式(如果有的话)中转义内部 '

您还需要 -P (perl) 而不是 -E (egrep) 正则表达式。

grep -r -n -H -P '(?<!key:)(?<!orKey:)(?<!isEqualToString:)\@\"[A-Za-z0-9]*\"' ./

关于regex - 我怎样才能在 bash 中正确地转义这个正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8797829/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com