正則表達(dá)式(Regular Expression,在代碼中常簡(jiǎn)寫(xiě)為regex、regexp或RE)是計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式使用單個(gè)字符串來(lái)描述、匹配一系列符合某個(gè)句法規(guī)則的字符串。在很多文本編輯器里,正則表達(dá)式通常被用來(lái)檢索、替換那些符合某個(gè)模式的文本。許多程序設(shè)計(jì)語(yǔ)言都支持利用正則表達(dá)式進(jìn)行字符串操作。在很多文本編輯器里,正則表達(dá)式通常被用來(lái)檢索、替換那些符合某個(gè)模式的文本。
正則表達(dá)式是一個(gè)查詢(xún)的字符串,它包含一般的字符和一些特別 的字符,特別 字符可以擴(kuò)展查找字符串的能力,正則表達(dá)式在查找和替換字符串的作用不可忽視,它能很好提高工作效率。
正則表達(dá)式用于字符串處理、表單驗(yàn)證等場(chǎng)合,有用 高效。開(kāi)發(fā)人員或運(yùn)維人員很得力的文本編輯器要數(shù)editplus了,這個(gè)軟件支持正則表達(dá)式,使用正則表達(dá)式進(jìn)行編輯文本經(jīng)??梢詭椭阃瓿珊芏喙ぷ?。這里我就給大家介紹幾種editplus常用正則表達(dá)式的使用方法,以備不時(shí)之需。
【1】正則表達(dá)式應(yīng)用——替換指定內(nèi)容到行尾
① 在替換對(duì)話(huà)框,查找內(nèi)容里輸入“abc.*”
② 同時(shí)勾選“正則表達(dá)式”復(fù)選框,然后點(diǎn)擊“全部替換”按鈕
其中,符號(hào)的含義如下:
“.” =匹配任意字符
“*” =匹配0次或更多
注意:其實(shí)就是正則表達(dá)式替換,這里只是把一些曾經(jīng)提出的問(wèn)題加以整理,單純從正則表達(dá)式本身來(lái)說(shuō),就可以引申出成千上萬(wàn)種特例。
【2】正則表達(dá)式應(yīng)用——數(shù)字替換
希望把
asdadas123asdasdas456asdasdasd789asdasd
替換為:
asdadas[123]asdasdas[456]asdasdasd[789]asdasd
解決:
[0-9][0-9][0-9] → [\0\1\2]
如果是任意數(shù)字串,則“[0-9]*[0-9]”
【3】正則表達(dá)式應(yīng)用——?jiǎng)h除每一行行尾的指定字符
比如
12345 1265345
2345
需要?jiǎng)h除每行末尾的“345”
解決:
345$ → 空
如果是行首,則前面加“^”
【4】正則表達(dá)式應(yīng)用——替換帶有半角括號(hào)的多行
幾百個(gè)網(wǎng)頁(yè)中都有下面一段代碼,我想把它們都去掉,可是找了很多search & replace的軟件,都是只能對(duì)“一行”進(jìn)行操作。
EditPlus 打開(kāi)幾百個(gè)網(wǎng)頁(yè)文件還是比較順暢的,所以完全可以勝任這個(gè)工作。
解決
在 Editplus 中使用正則表達(dá)式,由于“(”、“)”被用做預(yù)設(shè)表達(dá)式(或者可以稱(chēng)作子表達(dá)式)的標(biāo)志,所以需要使用 \ 轉(zhuǎn)義。
【5】正則表達(dá)式應(yīng)用——?jiǎng)h除空行
^[ \t]*\n → 空
注意\t前有空格符。空格符是空行的一個(gè)組成成分。
另一種方法:[\n]+ → \n
【6】正則表達(dá)式應(yīng)用——中間包含文字替換
如果要替換中間包含某文字的一行,例如包含yahoo,則可使用如下表達(dá)式匹配一行內(nèi)容
^.*yahoo.*
【7】正則表達(dá)式應(yīng)用——中間不包含文字替換
如果要替換中間不包含某文字的一行,例如不包含yahoo,則可使用如下表達(dá)式匹配一行內(nèi)容
^(?!.*yahoo).*
【8】查找url并提取
www.baidu.com">http://www.baidu.com
解決:
() → \1
(http://.*) →\1
總結(jié):EditPlus對(duì)正則表達(dá)式的支持有限,不支持 重復(fù)頻度 的定義,如:{3}、{3,}、{3,6}...
下面列出EditPlus查找或替換時(shí)支持的元字符:
表達(dá)式 說(shuō)明
\t 制表符.
\n 新行.
. 匹配任意字符.
| 匹配表達(dá)式左邊和右邊的字符. 例如, "ab|bc" 匹配 "ab" 或者 "bc".
[] 匹配列表之中的任何單個(gè)字符. 例如, "[ab]" 匹配 "a" 或者 "b". "[0-9]" 匹配任意數(shù)字.
[^] 匹配列表之外的任何單個(gè)字符.例如, "[^ab]" 匹配 "a" 和 "b" 以外的字符. "[^0-9]" 匹配任意非數(shù)字字符.
* 其左邊的字符被匹配任意次(0次,或者多次). 例如 "be*" 匹配 "b", "be" 或者 "bee".
+ 其左邊的字符被匹配至少一次(1次,或者多次). 例如 "be+" 匹配 "be" 或者 "bee" 但是不匹配 "b".
? 其左邊的字符被匹配0次或者1次. 例如 "be?" 匹配 "b" 或者 "be" 但是不匹配 "bee".
^ 其右邊的表達(dá)式被匹配在一行的開(kāi)始.例如 "^A" 僅僅匹配以 "A" 開(kāi)頭的行.
$ 其左邊的表達(dá)式被匹配在一行的結(jié)尾. 例如 "e$" 僅僅匹配以 "e" 結(jié)尾的行.
() 影響表達(dá)式匹配的順序,并且用作表達(dá)式的分組標(biāo)記.
\ 轉(zhuǎn)義字符. 如果你要使用 "\" 本身, 則應(yīng)該使用 "\\".