1 基本概念
元字元:
元字元說明
. 匹配除換行符以外的任意字元
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符()
\d 匹配數字
\b 匹配單詞的開始或結束
\w 匹配任意不是字母,數字,下劃線,漢字的字元
\s 匹配任意不是空白符的字元
\d 匹配任意非數字的字元
\b 匹配不是單詞開頭或結束的位置
^ 匹配行首
$ 匹配行尾
字元轉義
如果您想查詢元字元本身的話,需要使用"\"來轉意。例如"."代表除換行以外的任意字元,如果您想搜尋"."這個字元的話,需要這樣使用"\."。
重複
語法說明
* 重複零次或更多次
+ 重複一次或更多次
? 重複零次或一次
重複n次
重複n次或更多次
重複n到m次
字符集
若要匹配aeiou五個字元中的任意乙個,可以表示成[aeiou]。再如[0-9]表示0到9之間的任意乙個數字,它的含義和元字元中的\d實際上是一樣的。
反意
如果要匹配非a則[^a],除aeiou五個字母之外的表示成[^aeiou],
貪婪與止貪
設有字串dveadebcadefboipi,正規表示式a.*b,表示式的意思是匹配由a開始中間包含任意多個字元並以b結尾,這個表示式匹配出來的結果是adebcadefb,而不會是adeb,我們稱這種匹配為貪婪匹配,因為它匹配了盡可能多的字元。要防止這種貪婪匹配,使用"?",把上面的表示式寫成a.*?b的話,匹配出來的結果就是adeb了。
2 常用整個表示式
行首空格: ^\s+
行尾空格:\s+$
正整數: ^[1-9]\d*$
負整數: ^-[1-9]\d*$
3 應用例項
例1 我想給一首詩的最後一行都加上逗號, ^p表示匹配乙個換行符 (cr/lf) (段落) (dos 檔案),所以把"^p"替換成", ^p"就是說找到所有的換行符,替換成逗號+換行符,所以這樣替換之後就成了除了最後一行(沒有換行符)其他都加上了逗號.(注意在mac和linux中是^p 和^r)
例2 我從網上拷貝的html原始檔的超連結想要全部替換成href="###" 可以查詢href=".*",別忘了.表示任意字元(除了換行符),*表示匹配任意次數,所以".*"就是不管雙引號裡面的是什麼都匹配,所以得到了想要的結果
例3 我想在"第一章 第二章 第三章"這樣的標題前面加上》,需要用到分組,就是保護這麼幾個東西不替換,(當然你也可以把"第"字都替換成"》第")
UE正規表示式
1 刪除空行 替換 t p 為 空串 2 刪除行尾空格 替換 t 為 空串 3 刪除行首空格 替換 t 為 空串 4 每行設定為固定的4個空格開頭 替換 t t p 為 1 5 每段設定為固定的4個空格開頭 替換 t 為 如果一行是以空格開始的,則視之為一段的開始行 6 將一段合併為一行 替換 t ...
UE正規表示式語法
匹配行首 表示搜尋字串必須在行首,但不包括任何選定的結果字元中的行終止字元。匹配行尾 表示搜尋字串必須在行尾,但不包括任何選定的結果字元中的行終止字元。匹配任何除換行符的字元。如 m?n 匹配 man men min 但不匹配 moon 匹配任何除換行符外所出現的任意數量的字元。如 t t 匹配 t...
UE正規表示式語法
匹配行首 表示搜尋字串必須在行首,但不包括任何選定的結果字元中的行終止字元。匹配行尾 表示搜尋字串必須在行尾,但不包括任何選定的結果字元中的行終止字元。匹配任何除換行符的字元。如 m?n 匹配 man men min 但不匹配 moon 匹配任何除換行符外所出現的任意數量的字元。如 t t 匹配 t...