[[PageOutline]] = Regular Express 正規表示式,含 vim 用法 = == 特殊符號 == 需在符號前加上 \ {{{ / ^ . * & \ " }}} windows 換行符號 {{{ \r 或 \r\n }}} || 符號 || 等同於 || 意義 || || \w || || || \W || || || \d || || || \D || || || \s || || || \S || || == [] 集合字完 == 包含 [] 內的集合字元。 * example:aaa、aba、aca、ada、abc,要將 abc 以外的字串全選出。 * answer: {{{ a[abcd]a }}} 選取連續字元時用 - 分隔。 * example:aaa、aba、aca、ada、abc,要將 abc 以外的字串全選出。 * andwer:aaa、aba、aca、ada {{{ a[a-c]a }}} 選取連續數字。 * example:a1ab、a9ab、a5ab、a0ab、aaab,要將數字後接 ab 的字串全選出。 * andwer:1ab、a9ab、a5ab、a0ab {{{ [0-9]ab }}} == !^ 反向選擇、前置字元 == 不要包含 !^ 後的字元。 * example:aaa、baa、caa、daa,不要選 a 或 b 後面接 aa 的字串。 * andwer:caa、daa {{{ [^ab]aa }}} 以 !^ 後的字元為開頭。 * example:aaa、baa、caa、daa,不要選開頭是 a 跟 b 的字串。 * andwer: {{{ [^ab]aa }}} == . 任意字元 == * example:要選取下列中兩個 / 內所包含的字元。 {{{ 12345/asdf#$%#$%#@$%&*)&(^*sadf/123312SDF }}} * andwer: {{{ \/.*\/ }}} = vim = == 變數處理 == 將符合規則的字串做為變數使用: * example:要將 abc.jpg 改為 abc.txt。 * answer:將第二個 \( 與 \) 內所包含的字元做為 \1 的變數,第二個 \( 與 \) 內所包含的字元做為 \2 的變數。 {{{ :1,$s/\(abc.\)jpg/\1txt/g }}} == 記錄 macro recoard and play == * 參考:http://www.thegeekstuff.com/2009/01/vi-and-vim-macro-tutorial-how-to-record-and-play/ * 步驟: 1. 開始記錄 macro a。 {{{ [ESC] → q → a 按 [ESC] 再按 q 再按 a }}} 1. 開始執行你要重複的步驟。 {{{ i123[ESC] yyp }}} 1. 結束記錄 macro a。 {{{ [ESC] → q 按 [ESC] 再按 q }}} 1. 重複 a 這個 macro 5 次。 {{{ 5@a }}} == 在第一行產生連續數字 == {{{ :r !seq -w 1 100 }}} = Reference = * http://atedev.wordpress.com/2007/11/23/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F-regular-expression/