如何用grep匹配C++代码引号内的完整ARM/arm单词?
匹配C++源码中含完整ARM/arm单词的字符串字面量的正确grep命令
之前的grep命令会误匹配包含arm子串的单词(如alarm、Harmony),要精准匹配双引号包裹的字符串里的完整ARM/arm单词,可使用以下命令:
基础命令(区分大小写写法)
grep -riE '"[^"]*\b(ARM|arm)\b[^"]*"' . --include={*.h,*.cpp}
简化命令(忽略大小写)
利用-i选项忽略大小写,无需同时写ARM和arm,命令更简洁:
grep -riE '"[^"]*\barm\b[^"]*"' . --include={*.h,*.cpp}
命令解析
-r:递归遍历当前目录及子目录-i:忽略大小写,自动匹配ARM、Arm、arm等所有大小写组合-E:启用扩展正则表达式,支持括号分组等语法- 正则核心部分
"[^"]*\barm\b[^"]*":":匹配字符串起始的双引号[^"]*:匹配双引号内任意非双引号字符(0个或多个),确保不会跨字符串匹配\b:单词边界锚点,保证arm是独立完整的单词,不会和其他字符拼接(如alarm中的arm前后无单词边界,会被排除)[^"]*":匹配单词后的剩余字符及字符串结束的双引号
验证效果
- 会匹配的示例:
"ARM "、" ARM"、"abc ARM"、"ARM,"、"(ARM)" - 不会匹配的示例:
"Harmony"、"alarm "、"armory"
内容的提问来源于stack exchange,提问作者Alexey Starinsky
相关产品推荐
相关产品推荐

