UE如何使用正規表示式

2022-09-17 10:18:14 字數 1721 閱讀 1163

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...