UltraEdit 允許在搜索功能表下面列出了的許多搜索和替換功能中使用正規運算式。正規運算式能讓更多的複雜的搜索和替換功能變成簡單的操作。(中文版介面上顯示為“正規運算式”)
有兩個可使用的語法集合。下面的第一表顯示出在 UltraEdit 的更早的版本被使用的原來的 UltraEdit 句法。第二表給出了可選的"Unix"類型的正規運算式。這可以從配置單元啟用。
正規運算式 (UltraEdit 語法):
% 匹配行首 - 表示搜索字串必須在行首,但不包括任何選定的結果字元中的行終止字元。
$ 匹配行尾 - 表示搜索字串必須在行尾,但不包括任何選定的結果字元中的行終止字元。
? 匹配任何除換行符的字元。
* 匹配任何除換行符外所出現的任意數量的字元。
+ 匹配一個或多個前面的字元/運算式。必須找到至少一個出現的字元。不匹配重複的換行符。
++ 0 次或多次匹配前面的字元/運算式。不匹配重複的換行符。
^b 匹配一個分頁符。
^p 匹配一個換行符 (CR/LF) (段落) (DOS 文件) <--- 可以用來讓很多列變成一行的技巧
^r 匹配一個換行符 (僅 CR) (段落) (MAC 文件)
^n 匹配一個換行符 (僅 LF) (段落) (UNIX 文件)
^t 匹配一個跳位字元
[ ] 匹配任何括弧中的單個字元或範圍
^{A^}^{B^} 匹配運算式 A 或 B
^ 忽略其後的正規運算式字元
^(*^) 在運算式加上括弧或標籤在替換命令中使用。正規運算式中可以有 9 個運算式標籤,數位根據它們在正規運算式中的次序確定數字。
相應的替換運算式是 ^x,x 的範圍是 1-9。例如: 如果 ^(h*o^) ^(f*s^) 匹配“hello folks”,那麼^2 ^1 表示將用“folks hello”替換它。
正規運算式搜索技巧 (UltraEdit 語法) :
刪除空行: 替換 %[ ^t]++^p 為 空串
刪除行尾空格: 替換 [ ^t]+$ 為 空串
刪除行首空格: 替換 %[ ^t]+ 為 空串
每行設置為固定的4個空格開頭: 替換
%[ ^t]++^([~ ^t^p]^) 為 " ^1"
每段設置為固定的4個空格開頭: 替換 %[ ^t]+ 為 " "
(如果一行是以空格開始的,則視之為一段的開始行)
將一段合併為一行: 替換
[ ^t]++^p^([~ ^t^p]^) 為 ^1
(注意: 此處假定文本是以DOS方式回車換行 - CR/LF)
去掉HTML TAG: 替換
^{<*>^}^{<*^p*>^} 為 空串
刪除HTML中的所有 : 替換
<[ ]++a *[ ]++href[ ]++=*> 為 空串
<[ ]++a *[ ]++href[ ]++=*> 為 空串
刪除文本中指定的前2列字元: 替換 %?? 為 空串
在第4列後插入2列空白字元: 替換 %^(????^)^(?^) 為 "^1 ^2"
查找所有的數字 : [0-9]+[.]++[0-9]+
查找所有的單詞 : [a-z]+
查找所有的網址 : http://[a-z0-9^~`_./^-^?=&]+
正規運算式 (Unix語法):
符號 功能
標記下一個字元作為一個特殊的字元。
"n" 匹配字元"n"。"n" 一個換行符或換行符字元。
^ 匹配/定位行的開始。
$ 匹配/定位行的尾。
* 匹配前面的字元零次或多次。例
+ 匹配前面的字元一次或多次。例
. 匹配除了一個換行符字元匹配任何單個的字元。
(expression)標注用於替換命令的運算式。一個正規運算式根據需要,最多可以有9個標注運算式。相應的代替運算式是 x , x的範圍是 1-9 。
例如:
If (h.*o) (f.*s) matches "hello folks",
2 1 would replace it with "folks hello".
(hello folks 將被替換成 folks hello。)
[xyz] 一個字元集。匹配在方括號之間的任何字元。
[^xyz] 一個否定的字元集。不匹配在方括號之間的任何字元。
d 匹配一個數位字元。等價於[0-9]。
D 匹配一個非數位字元。等價於[^0-9]。
f 匹配一個換頁字元。
n 匹配一個換行字元。
r 匹配一個回車符字元。
s 匹配任何空白的空格, 標籤, 換頁, 包括空格等等,但不匹配換行符。
S 匹配任何非空白的字元,但不匹配換行符。
t 匹配一個標籤TAB字元。
v 匹配一個垂直的標籤字元。
w 匹配任何詞語字元包括下劃線。
W 匹配任何非詞語字元字元。
注意: ^ 是實際字元 ^ 不是Ctl + 鍵值。
例如:
m.n 匹配 "man","men","min" 但不匹配 "moon".
t+t 匹配 "test","tonight" 和 "tea time" (the "tea t" portion) 但不匹配 "tea
time" (newline between "tea " and "time").
Te*st 匹配 "test","teest"," teeeest "等等。但是不匹配 "tst"。
[aeiou] 匹配每個小寫母音。
[,.?] 匹配一文字的 ",","."或 "?"。
[0-9,a-z] 匹配任何數位,或小寫字母。
[^0-9] 除了數位以外匹配任何字元 (~ 意味著"不")
你按如下方式可以查找一個運算式A或 B :
"(John)|(Tom)"
這將在找John或Tom的出現。應該在 2 個運算式之間沒有任何東西。
你可以在同一搜索中按如下方式組合A or B and C or D:
"(John|Tom) (Smith|Jones)"
這將在John or Tom 後面找 Smith or Jones。
另外:
p 匹配 CR/LF ( 作為 rn 的一樣 ) 作為DOS行結束符匹配
如果查找/替換功能中正規運算式沒有選用,則替換欄位中下列字元也是有效的:
符號 功能
^^ 匹配一個 "^" 字元
^s 替換為被選擇 ( 加亮 ) 活躍的檔視窗的文章。
^c 替換為剪貼板的內容
^b 匹配一個頁裂縫
^p 匹配一個換行符 ( CR/LF )( 段 )( DOS 文件)
^r 匹配一個換行符 ( CR 僅僅 )( 段 )( MAC 文件)
^n 匹配一個換行符 ( LF 僅僅 )( 段 )( UNIX 文件)
^t 匹配一個標籤TAB字元
%[ ^t]++^p 匹配一個空行
感謝你的整理, 很有用,
回覆刪除