a.txt:
systemd-core
systemd-time
grep '\bsystemd\b' a.txt为什么能匹配到,不是空白是单词边界么,为什么上面的还能匹配到?
\b 的定义是\b 匹配的是位置(零宽度断言),而不是字符,
\b 匹配的是以下位置(不是字符):
单词字符(\w,即 [a-zA-Z0-9_])和非单词字符(\W)之间的位置
字符串开头/结尾与单词字符之间的位置
关键区别
概念 匹配内容 示例
单词边界 \b 位置(零宽度) hello-world 中 o 和 - 之间的位置
空白字符 \s 具体字符(空格、制表符、换行符) 空格 、制表符 \t、换行符 \n