0

我正在尝试匹配一个字符,例如}在 ac 文件中,但它不应该在引号之间,例如"}""fdjskfhjds } 543897dhfhd92-()*&$". 如何使用 grep 形成正则表达式来执行此操作?

我现在返回 0 个匹配项的是:

grep '"[^"]* { [^"]*"'

这个想法是匹配“”之间的字符{。(我需要 not ^ 同时获得更多的双引号匹配)

如果使用其他标准 unix 工具可以更轻松地完成,欢迎使用解决方案!

4

2 回答 2

0

使用环视断言 grep -P '(?!.*")\}(?!.*")'

下面的示例仅找到“more”和“blah”之间的“}”

echo 'blah"}"more}blah' | grep -P '(?!.*")\{(?!.*")'

于 2013-10-29T10:53:02.983 回答
0

假设您的版本grep支持 PCRE,您可以说:

'(?<=[^"])}(?=[^"]?)'

例如,

$ echo 'foo}bar"}"baz}' | grep -P '(?<=[^"])}(?=[^"]?)'
foo}bar"}"baz}
   ^         ^      <== The carets denote the matched }
于 2013-10-29T10:59:53.783 回答