[dywang@dywmac ~]$ vim a.txt [dywang@dywmac ~]$ cat a.txt asdt ast asbt as?t asbt as?t as\bt as\?t
as?t 不加單引號,基礎正規表示法中 ? 不是特殊字元,使不使用 \ 跳脫都一樣查到 as?t。
[dywang@dywmac ~]$ grep as?t a.txt as?t as?t [dywang@dywmac ~]$ grep as\?t a.txt as?t as?t
as?t 加單引號,則單引號中每一個字符都要匹配,基礎正規表示法中 ? 不是特殊字元,查到 as?t。
[dywang@dywmac ~]$ grep 'as?t' a.txt as?t as?t
as\?t 加單引號,則單引號中 \? 為延伸正規表示法的 ?,也就是重複前一字符 0 或 1 次,所以查到 ast。
[dywang@dywmac ~]$ grep 'as\?t' a.txt ast
a\?t 或 h\?t 加單引號,則單引號中 \? 為延伸正規表示法的 ?,也就是重複前一字符 a(h) 0 或 1 次,所以有 t 都查到。
[dywang@dywmac ~]$ grep 'a\?t' a.txt asdt abt afbt ar?t asbt as?t as\bt as\?t [dywang@dywmac ~]$ grep 'h\?t' a.txt asdt ast asbt as?t asbt as?t as\bt as\?t