2024-05-14 16:38:24 发布
网友
我试图匹配一个字符,例如c文件中的},但它不应该介于 引号,例如"}"或"fdjskfhjds } 543897dhfhd92-()*&$"。 如何使用grep生成正则表达式?你知道吗
}
"}"
"fdjskfhjds } 543897dhfhd92-()*&$"
现在返回0个匹配项的是:
grep '"[^"]* { [^"]*"'
它的意思是匹配字符{在“”之间。 (我需要not^来同时获得更多双引号匹配)
如果使用其他标准unix工具可以更轻松地完成,则欢迎使用解决方案!你知道吗
使用lookaround断言 grep -P '(?!.*")\}(?!.*")'
grep -P '(?!.*")\}(?!.*")'
下面的示例只找到“more”和“blah”之间的“}”
echo 'blah"}"more}blah' | grep -P '(?!.*")\{(?!.*")'
假设您的grep版本支持PCRE,您可以说:
grep
'(?<=[^"])}(?=[^"]?)'
例如
$ echo 'foo}bar"}"baz}' | grep -P '(?<=[^"])}(?=[^"]?)' foo}bar"}"baz} ^ ^ <== The carets denote the matched }
使用lookaround断言
grep -P '(?!.*")\}(?!.*")'
下面的示例只找到“more”和“blah”之间的“}”
echo 'blah"}"more}blah' | grep -P '(?!.*")\{(?!.*")'
假设您的
grep
版本支持PCRE,您可以说:例如
相关问题 更多 >
编程相关推荐