我正在尝试匹配一个字符,例如{c}文件中的}
但它不应介于两者之间
引用,例如"}"
或"fdjskfhjds } 543897dhfhd92-()*&$"
。
如何使用grep构建正则表达式?
我现在拥有的返回0匹配的是:
grep '"[^"]* { [^"]*"'
并且这个想法与“{”之间的角色相匹配。 (在此期间我需要not ^来获得更多双引号匹配)
如果使用其他标准的unix工具可以更轻松地完成,欢迎使用解决方案!
答案 0 :(得分:0)
使用外观断言
grep -P '(?!.*")\}(?!.*")'
以下示例仅查找“more”和“blah”之间的“}”
echo 'blah"}"more}blah' | grep -P '(?!.*")\{(?!.*")'
答案 1 :(得分:0)
假设您的grep
版本支持PCRE,您可以说:
'(?<=[^"])}(?=[^"]?)'
例如,
$ echo 'foo}bar"}"baz}' | grep -P '(?<=[^"])}(?=[^"]?)'
foo}bar"}"baz}
^ ^ <== The carets denote the matched }