警告一般表示式是強大的字串比對工具。因此,趨勢科技建議選擇使用一般表示式的系統管理員必須熟悉及慣用一般表示式語法。撰寫不當的一般表示式可能對效能造成嚴重的負面影響。趨勢科技建議您先從簡單的一般表示式開始著手,而不要使用複雜的語法。在引進新規則時,請先使用封存處理行動,並觀察
Messaging Security Agent 如何使用您的規則來管理郵件。當您有把握規則不會產生無法預期的結果時,才可以變更處理行動。
|
項目
|
涵義
|
範例
|
---|---|---|
.
|
點或句號字元代表新行字元以外的任何字元。
|
do. 的相符項目有 doe、dog、don、dos、dot 等。
d.r 的相符項目有 deer、door 等。
|
*
|
星號字元表示星號前面的項目有零個或多個實體。
|
do* 的相符項目有 d、do、doo、dooo、doooo 等。
|
+
|
加號字元表示前面的項目有一個或多個實體。
|
do+ 的相符項目有 do、doo、dooo、doooo 等,但不包括 d。
|
?
|
問號字元表示前面的項目有零個或一個實體。
|
do?g 的相符項目有 dg 或 dog,但不包括 doog、dooog 等。
|
( )
|
括弧字元會將置於其中的任何文字組成群組,以視為單一實體。
|
d(eer)+ 的相符項目有 deer、deereer、deereereer 等。+ 符號會套用至括弧內的子字串,因此一般表示式會尋找在 d 後跟隨一組或多組「eer」的項目。
|
[ ]
|
方括號字元表示一個字元集合或字元範圍。
|
d[aeiouy]+ 的相符項目有 da、de、di、do、du、dy、daa、dae、dai 等。+ 符號會套用至方括號內的字元集合,因此一般表示式會尋找其後跟隨一個或多個屬於集合
[aeioy] 中任何字元的 d。
d[A-Z] 的相符項目有 dA、dB、dC 等,一直類推到 dZ。方括號中的集合代表從 A 到 Z 之間所有大寫字母的範圍。
|
[ ^ ]
|
方括號內的插入號 (Carat) 字元會在邏輯上否定指定的集合或範圍,意即一般表示式將比對集合或範圍以外的任何字元。
|
d[^aeiouy] 的相符項目有 db、dc、dd、d9、d# 等,也就是其後跟隨任何除了母音字母以外單一字元的 d。
|
{ }
|
大括號字元設定前面項目的特定出現次數。大括號內的單一值表示只會比對那些多次。由逗號分隔的一對數字代表前面字元的一組有效計數。後面跟著逗號的單一數字表示沒有上限。
|
da{3} 的相符項目為 daaa,也就是其後跟隨 3 個且僅出現 3 次「a」的 d。da{2,4} 的相符項目為 daa、daaa、daaaa 和 daaaa(但不包括
daaaaa),也就是其後跟隨出現 2、3 或 4 次「a」的 d。da{4,} 的相符項目如 daaaa、daaaaa、daaaaaa 等,也就是其後跟隨出現 4
或更多次「a」的 d。
|
項目
|
涵義
|
範例
|
---|---|---|
\d
|
任何數字字元,功能相當於 [0-9] 或 [[:digit:]]
|
\d 的相符項目有 1、12、123 等,但不包括 1b7;也就是一個或多個的任何數字字元。
|
\D
|
任何非數字字元,功能相當於 [^0-9] 或 [^[:digit:]]
|
\D 的相符項目有 a、ab、ab&,但不包括 1;也就是一個或多個除了 0、1、2、3、4、5、6、7、8 或 9 以外的任何字元。
|
\w
|
任何「字組」字元(即任何英數字元)的功能相當於 [_A-Za-z0-9] 或 [_[:alnum:]]
|
\w 的相符項目有 a、ab、a1,但不包括 !&;也就是一個或多個大寫或小寫字母或數字,但不包括標點符號或其他特殊字元。
|
\W
|
任何非英數字元,功能相當於 [^_A-Za-z0-9] 或 [^_[:alnum:]]
|
\W 的相符項目如 *、&,但不包括 ace 或 a1,也就是一個或多個除了大寫及小寫字母和數字以外的任何字元。
|
\s
|
任何空白字元,空格、新行、定位鍵 (Tab)、不中斷空格等字元,功能相當於 [[:space]]
|
vegetable\s 與在「vegetable」後跟隨任何空白字元的項目相符。因此字句如「I like a vegetable in my soup」將會觸發一般表示式,但是「I
like vegetables in my soup」則不然。
|
\S
|
任何非空白字元,除了空格、新行、定位鍵 (Tab)、不中斷空格等字元,功能相當於 [^[:space]]
|
vegetable\S 與在「vegetable」後跟隨任何非空白字元的項目相符。因此字句如「I like vegetables in my soup」將會觸發一般表示式,但是「I like a vegetable in my soup」則不然。 |
項目
|
涵義
|
範例
|
---|---|---|
[:alpha:]
|
任何英文字母字元
|
.REG.[[:alpha:]]的相符項目有 abc、def、xxx,但不包括 123 或 @#$。
|
[:digit:]
|
任何數字字元;功能相當於 \d
|
.REG.[[:digit:]]的相符項目有 1、12、123 等。
|
[:alnum:]
|
任何「字組」字元;也就是任何英數字元,功能相當於 \w
|
.REG.[[:alnum:]]的相符項目有 abc、123,但不包括 ~!@。
|
[:space:]
|
任何空白字元;空格、新行、定位鍵 (Tab)、不中斷空格等字元,功能相當於 \s
|
.REG.(vegetable)[[:space:]]與其後跟隨任何空白字元的「vegetable」相符。因此字句如「I like a vegetable in my
soup」將會觸發一般表示式,但是「I like vegetables in my soup」則不然。
|
[:graph:]
|
除了空格、控制字元等以外的任何字元
|
.REG.[[:graph:]]的相符項目有 123、abc、xxx、><”,但不包括空格或控制字元。
|
[:print:]
|
任何字元(與 [:graph:] 類似)可包括空格字元
|
.REG.[[:print:]]的相符項目有 123、abc、xxx、><” 和空格字元。
|
[:cntrl:]
|
任何控制字元(例如:CTRL + C、CTRL + X)
|
.REG.[[:cntrl:]]的相符項目有 0x03、0x08,但不包括 abc、123、!@#。
|
[:blank:]
|
空格和定位字元
|
.REG.[[:blank:]]與空格和定位字元比對相符,但不包括 123、abc、!@#
|
[:punct:]
|
標點符號字元
|
.REG.[[:punct:]]的相符項目有 ; :? ! ~ @ # $ % & * ‘ “ , 等,但不包括 123、abc
|
[:lower:]
|
任何小寫字母字元(注意:必須先啟動「啟動大小寫相符比對」,否則功能如同 [:alnum:])
|
.REG.[[:lower:]]的相符項目有 abc、Def、sTress、Do 等,但不包括 ABC、DEF、STRESS、DO、123、!@#。
|
[:upper:]
|
任何大寫字母字元(注意:必須先啟動「啟動大小寫相符比對」,否則功能如同 [:alnum:])
|
.REG.[[:upper:]]的相符項目有 ABC、DEF、STRESS、DO 等,但不包括 abc、Def、Stress、Do、123、!@#。
|
[:xdigit:]
|
十六進位數字 (0-9a-fA-F) 中允許的數字
|
.REG.[[:xdigit:]]的相符項目有 0a、7E、0f 等。
|
項目
|
涵義
|
範例
|
---|---|---|
^
|
表示字串的開頭。
|
^(notwithstanding) 與開頭為「notwithstanding」的任何文字區塊相符,因此字句如「notwithstanding the fact that
I like vegetables in my soup」將會觸發一般表示式,但是「The fact that I like vegetables in my soup
notwithstanding」則不然。
|
$
|
表示字串的結尾。
|
(notwithstanding)$ 與結尾為「notwithstanding」的任何文字區塊相符,因此字句如「notwithstanding the fact that
I like vegetables in my soup」將不會觸發一般表示式,但是「The fact that I like vegetables in my soup
notwithstanding」則會觸發。
|
項目
|
涵義
|
範例
|
||
---|---|---|---|---|
\
|
用來比對某些在一般表示式中具有特別意義的字元(例如:「+」)。
|
(1) .REG.C\\C\+\+ 與「C\C++」相符。
(2) .REG.\* 與 * 比對相符。
(3) .REG.\? 與 ? 比對相符。
|
||
\t
|
表示定位字元。
|
(stress)\t 與在子字串「stress」後緊接定位字元 (ASCII 0x09) 的任何文字區塊相符。
|
||
\n
|
表示新行字元。
|
(stress)\n\n 與在子字串「stress」後緊接兩個新行字元 (ASCII 0x0A) 的任何文字區塊相符。
|
||
\r
|
表示歸位字元。
|
(stress)\r 與在子字串「stress」後緊接一個歸位字元 (ASCII 0x0D) 的任何文字區塊相符。
|
||
\b
|
表示退格字元。
OR
代表邊界。
|
(stress)\b 與在子字串「stress」後緊接一個退格字元 (ASCII 0x08) 的任何文字區塊相符。
文字邊界 (\b) 會定義為兩個字元間的點,它的一邊有 \w,另一邊則有 \W(任何順序皆可),當字串的開頭與結尾符合 \W 時即會停止計算虛構的字元(在字元類別內,\b
表示退格字元,而非文字邊界)。
例如,下列的一般表示式會比對社會安全號碼:.REG.\b\d{3}-\d{2}-\d{4}\b
|
||
\xhh
|
表示具有指定十六進位碼(其中的 hh 代表任何兩位數十六進位值)的 ASCII 字元。
|
\x7E(\w){6} 與包含前有 ~(波浪號)字元再加上正好六個英數字元的「文字」的任何文字區塊相符。因此,字組「~ab12cd」、「~Pa3499」會相符,但「~oops」則不符。
|
.REG.\b\d{3}-\d{2}-\d{4}\b
|
|
333-22-4444
|
符合
|
333224444
|
不符
|
333 22 4444
|
不符
|
3333-22-4444
|
不符
|
333-22-44444
|
不符
|