符号 作用 举例说明
\b 位置断言——只匹配一个“位置”,不消耗字符 grep -P '\bcat\b' 找到独立单词 “cat”,而不会匹配 “catch”。
\w 真正匹配字符——匹配一个“单词字符” grep -P '\w+' 把连续的一串 “字母/数字/下划线” 整个抓出来。
什么时候只用 \b 就够了?
只想判断某个“完整单词”是否存在
什么时候必须用到 \w?
提取而不仅是定位
把整段单词/数字抓出来:
bash
复制
grep -Po '\w+' file
替换或改写
sed -E 's/\w+/\U&/g' 把每个单词转大写——这里必须用 \w 去“吃进”字符。
复杂边界
只想匹配 “下划线或数字结尾” 的词:
bash
复制
grep -P '\b\w+_\d+\b'
这种场景单靠 \b 做不到。
\w 匹配一个“单词字符”,\b 匹配一个“单词边界”,二者完全不同。
元字符 匹配内容 是否消耗字符 示例
\w 一个单词字符 [A-Za-z0-9_] ✅ 消耗 a1_ 中的 a、1、_ 各算一次
\b 单词字符与非单词字符之间的位置 ❌ 零宽 cat! 中 t 与 ! 之间的位置
正则 \w+ 匹配 hello → 得到 hello(5 个字符被吃掉)。
正则 \bhello\b 匹配 "hello" → 只确认 hello 前后是“非单词字符”或字符串边界,不吞字符,匹配成功但长度 0。