字符间匹配字符

2024-05-14 16:38:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图匹配一个字符,例如c文件中的},但它不应该介于 引号,例如"}""fdjskfhjds } 543897dhfhd92-()*&$"。 如何使用grep生成正则表达式?你知道吗

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

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

它的意思是匹配字符{在“”之间。 (我需要not^来同时获得更多双引号匹配)

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


Tags: 文件工具标准unixnot解决方案字符grep
2条回答

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

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

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

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

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

例如

$ echo 'foo}bar"}"baz}' | grep -P '(?<=[^"])}(?=[^"]?)'
foo}bar"}"baz}
   ^         ^      <== The carets denote the matched }

相关问题 更多 >

    热门问题