基礎與延伸比較一

  1. 編譯一個測試檔如下:
    [dywang@dywmac ~]$ vim a.txt
    [dywang@dywmac ~]$ cat a.txt
    asdt
    ast
    asbt
    as?t
    asbt
    as?t
    as\bt
    as\?t
    
  2. 查詢 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
    
  3. 查詢 as?t 加單引號,則單引號中每一個字符都要匹配,基礎正規表示法中 ? 不是特殊字元,查到 as?t
    [dywang@dywmac ~]$ grep 'as?t' a.txt
    as?t
    as?t
    
  4. 查詢 as\?t 加單引號,則單引號中 \? 為延伸正規表示法的 ?,也就是重複前一字符 0 或 1 次,所以查到 ast
    [dywang@dywmac ~]$ grep 'as\?t' a.txt
    ast
    
  5. 查詢 a\?th\?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