天天看點

正規表達式分類

轉載,原文位址如下: http://tanqisen.github.io/blog/2013/01/13/vim-search-replace-regex/

簡單替換表達式

:[range]s/from/to/[flags]

  • range

    : 搜尋範圍,如果沒有指定範圍,則作用于但前行。
    1. :1,10s/from/to/

       表示在第1到第10行(包含第1,第10行)之間搜尋替換;
    2. :10s/from/to/

       表示隻在第10行搜尋替換;
    3. :%s/from/to/

       表示在所有行中搜尋替換;
    4. 1,$s/from/to/

       同上。
  • flags:

     有如下四個選項:
    1. c

       confirm,每次替換前詢問;
    2. e

       error, 不顯示錯誤;
    3. g

       globle,不詢問,整行替換。如果不加

      g

      選項,則隻替換每行的第一個比對到的字元串;
    4. i

       ignore,忽略大小寫。
    這些選項可以合并使用,如

    cgi

    表示不區分大小寫,整行替換,替換前詢問。

正規表達式

  1. 元字元
    •  元 字 符   說 明 
      . 比對任意字元
      [abc] 比對方括号中的任意一個字元,可用

      -

      表示字元範圍。如[a-z0-9]比對小寫字母和數字
      [^abc] 比對除方括号中字元之外的任意字元
      \d 比對阿拉伯數字,等同于[0-9]
      \D 比對阿拉伯數字之外的任意字元,等同于[^0-9]
      \x 比對十六進制數字,等同于[0-9A-Fa-f]
      \X 比對十六進制數字之外的任意字元,等同于[^0-9A-Fa-f]
      \l 比對[a-z]
      \L 比對[^a-z]
      \u 比對[A-Z]
      \U 比對[^A-Z]
      \w 比對單詞字母,等同于[0-9A-Za-z_]
      \W 比對單詞字母之外的任意字元,等同于[^0-9A-Za-z_]
      \t 比對

      <TAB>

      字元
      \s 比對空白字元,等同于[\t]
      \S 比對非空白字元,等同于[^\t]
    • 表示數量的元字元
      * 比對0-任意個
      \+ 比對1-任意個
      \? 比對0-1個
      \{n,m} 比對n-m個
      \{n} 比對n個
      \{n,} 比對n-任意個
      \{,m} 比對0-m個
    • 表示位置的元字元
      $ 比對行尾
      ^ 比對行首
      \< 比對單詞詞首
      \> 比對單詞詞尾
    • 一些普通字元需轉意
      \*

      *

       字元
      \.

      .

      \/ 比對 

      /

      \

      \

      \[

      [

      \]

      ]

  2. 替換變量

    在正則式中以

    \(

    \)

    括起來的正規表達式,在後面使用的時候可以用

    \1

    \2

    等變量來通路

    \(

    \)

    中的内容。

例子

  1. 删除行尾空格:

    %s/\s+$//g

  2. 删除行首多餘空格:

    %s/^\s*//

     或者 

    %s/^ *//

  3. 删除沒有內容的空行:

    %s/^$//

    g/^$/d

  4. 删除包含有空格組成的空行:

    %s/^\s*$//

    g/^\s*$/d

  5. 删除以空格或TAB開頭到結尾的空行:

    %s/^[ |\t]*$//

    g/^[ |\t]*$/d

  6. 把文中的所有字元串“abc……xyz”替換為“xyz……abc”可以有下列寫法
    :%s/abc\(.*\)xyz/xyz\1abc/g
    :%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g      

sed:指定檔案進行替換

sed -i "s/from/to/g" <檔案名>