如何让grep的.*通配符完全忽略空格?C++代码匹配问题
解决grep匹配
&var[0]时误匹配含空格情况的方法 你的问题出在.*会匹配任意字符(包括空格),所以才会把int&后面的空格和内容也包含进去,误匹配到int& aaa = bbb[0];这类行。要让&和[0]之间的部分完全不包含空格,只需要把.*换成非空格/非空白字符的匹配表达式就行,有两种常用写法:
匹配非空格字符(仅排除空格,不排除制表符等其他空白):
grep -r "&[^ ]*\[0\]" .这里
[^ ]表示“不是空格的任意单个字符”,*表示匹配零个或多个这样的字符,刚好对应&和[0]之间没有空格的变量名。更严谨的匹配非空白字符(排除所有空白类型,比如空格、制表符、换行符等):
grep -r "&\S*\[0\]" .\S是grep里的预定义字符类,直接表示“非空白字符”,用法和上面的[^ ]一致,但覆盖场景更全面。
这两个命令都只会匹配&后面直接跟非空白字符、直到[0]的情况,不会命中int&后面带空格的行,完美符合你要找&var[0]实例的需求。
内容的提问来源于stack exchange,提问作者kstn
相关产品推荐
相关产品推荐

