規則運算式 (Visual Studio)
更新:2007 年 11 月
規則運算式是一種可尋找並取代文字模式之明確而有彈性的標記法。當您執行 [快速尋找]、[檔案中尋找]、[快速取代] 或 [檔案中取代] 作業時,可以在尋找和取代視窗的 [尋找目標] 和 [取代成] 欄位中使用特定的一組規則運算式。
若要啟用規則運算式,請在 [尋找和取代] 視窗中展開 [尋找選項],然後選取 [使用],再選取 [規則運算式]。[尋找目標] 和 [取代成] 欄位旁的 [運算式產生器] 三角形按鈕會變成可用狀態。請按一下按鈕,以顯示常用的規則運算式清單。當您按一下清單中的規則運算式時,它會插入到 [尋找目標] 或 [取代成] 欄位中的游標位置。當您按一下 [運算式產生器] 最下方的 [完整字元清單] 時,會出現說明主題。本主題中的所有規則運算式,Visual Studio 的尋找和取代功能都能辦識。您可以複製主題中的規則運算式,然後貼到 [尋找目標] 或 [取代成] 欄位。
注意事項: |
---|
可用於 [尋找目標] 和 [取代成] 的規則運算式與 .NET Framework 程式設計的有效規則運算式兩者之間有語法差異。例如,在 [尋找和取代] 中,大括號 {} 是用於標記運算式,因此運算式 zo{1} 會比對 zo 後面接著標記 1 的所有項目,例如 Alonzo1 和 Gonzo1。這個規則運算式的語法和 .NET Framework 不同,在後者中,標記法 {} 用於數量詞,運算式 zo{1} 會比對出後面只接一個 o 的 z,如同 zone 而不是 zoo。 |
尋找和取代的規則運算式
出現在 [運算式產生器] 中的常用規則運算式如下所示。
運算式 |
語法 |
說明 |
範例 |
---|---|---|---|
任何字元 |
. |
比對分行符號以外的任何單一字元。 |
a.o 比對出 "around" 中的 "aro" 和 "about" 中的 "abo",而不是 "across" 中的 "acro"。 |
零或多個 |
* |
比對先前運算式中零或多個項目,並以所有可能組合進行比對。 |
a*b 會比對 "bat" 中的 "b" 和 "about" 中的 "ab"。 e.*e 會比對 "enterprise" 一字。 |
一個或多個 |
+ |
最少比對先前運算式中的一個項目。 |
ac+ 會比對包含字母 "a" 以及至少一個 "c" 的字,例如 "race" 和 "ace"。 a.+s 會比對 "access" 一字。 |
行首 |
^ |
將比對字串錨定至行首。 |
^car 會比對 "car" 一字,但它必須出現在編輯器中一行上的第一組字元。 |
行尾 |
$ |
將比對字串錨定至行尾。 |
end$ 會比對 "end" 一字,但它必須出現在編輯器中一行行尾的最後一組字元。 |
字首 |
< |
只比對字首在此點的文字。 |
<in 會比對開頭為字母 "in" 的字,例如 "inside" 和 "into"。 |
字尾 |
> |
只比對字尾在此點的文字。 |
ss> 會比對結尾為字母 "ss" 的字,例如 "across" 和 "loss"。 |
分行符號 |
\n |
比對與作業系統無關的分行符號。在取代運算式中,插入分行符號。 |
End\nBegin 會比對 "End" 和 "Begin" 兩字,但 "End" 必須是一行的最後一個字串,且 "Begin" 是下一行的第一個字串。 在取代運算式中, Begin\nEnd 會在第一行將 "End" 一字取代成 "Begin"、插入分行符號,然後再將 "Begin" 一字取代成 "End"。 |
集合中的任何單一字元 |
[] |
比對任何一個在 [] 中的字元。如果需要指定字元的範圍,請以破折號 (-) 分隔列出字元的起點和終點,如 [a-z]。 |
be[n-t] 會比對 "between" 中的 "bet"、"beneath" 中的 "ben" 和 "beside" 中的 "bes",但不會比對 "below" 中的 "bel"。 |
非集合中的任何單一字元 |
[^...] |
比對任何一個不在 ^ 後面所接字元集中的字元。 |
be[^n-t] 會比對 "before" 中的 "bef"、"behind" 中的 "beh" 和 "below" 中的 "bel",但不會比對 "beneath" 中的 "ben"。 |
或 |
| |
比對 OR 符號 (|) 之前或之後的運算式。大部分在群組中使用。 |
(sponge|mud) bath 會比對 "sponge bath" 和 "mud bath"。 |
逸出字元 |
\ |
比對反斜線 (\) 之後的常值 (Literal) 字元。這可讓您尋找規則運算式標記法中所使用的字元,如 { 和 ^。 |
\^ 會搜尋 ^ 字元。 |
標記運算式 |
{} |
比對封入型運算式標記的文字。 |
zo{1} 會比對 "Alonzo1" 和 "Gonzo1" 中的 "zo1",但不會比對 "zone" 中的 "zo"。 |
C/C++ 識別項 |
:i |
運算式 ([a-zA-Z_$][a-zA-Z0-9_$]*) 的簡寫。 |
比對任何可能的 C/C++ 識別項。 |
引號字串 |
:q |
運算式 (("[^"]*")|('[^']*')) 的簡寫,會比對雙引號或單引號括住的所有字元,包括引號本身在內。 |
:q 會比對 "test quote" 和 'test quote',但不會比對 can't 的 't。 |
空格或定位鍵 |
:b |
比對空格字元或定位字元。 |
Public:bInterface 會比對文字中的 "Public Interface" 這個片語。 |
整數 |
:z |
運算式 ([0-9]+) 的簡寫,會比對任何數字字元的組合。 |
比對任何整數,例如 "1"、"234"、"56" 等。 |
尋找和取代作業中所有有效規則運算式的清單比 [運算式產生器] 中所顯示的清單還要更長。雖然下列規則運算式未出現在 [運算式產生器] 中,您還是可以在 [尋找目標] 或 [取代成] 欄位中使用它們。
運算式 |
語法 |
說明 |
範例 |
---|---|---|---|
最小,零或更多 |
@ |
比對先前運算式中零或多個項目,比對的字元越少越好。 |
e.@e 會比對 "enterprise" 中的 "ente" 和 "erprise",但不會比對完整單字 "enterprise"。 |
最小,1 或更多 |
# |
比對先前運算式中一個或多個項目,比對的字元越少越好。 |
ac# 會比對包含字母 "a" 以及至少一個 "c" 的字,例如 "ace"。 a.#s 會比對 "access" 一字中的 "acces"。 |
重複 n 次 |
^n |
比對先前運算式中 n 個項目。 |
[0-9]^4 會比對任何 4 位數的數字序列。 |
群組 |
() |
可以讓您將一組運算式設為同一個群組。如果要在單一搜尋中搜尋兩個不同的運算式,您可以使用群組運算式將它們組合起來。 |
如果想要搜尋 - [a-z][1-3] 或 - [1-10][a-z],您可以將它們組合成:([a-z][1-3]) | ([1-10][a-z])。 |
第 n 個標記文字 |
\n |
在尋找或取代運算式中,表示第 n 個標記運算式比對到的文字,其中 n 是由 1 到 9 的數字。 在取代運算式中,\0 會插入整個比對到的文字。 |
如果搜尋 a{[0-9]} 並取代成 \1,則所有 "a" 後面接著數字的項目就會取代成它後面所接的數字。例如,"a1" 會取代成 "1",以此類推,"a2" 就會取代成 "2"。 |
靠右欄位 |
\(w,n) |
在取代運算式中,將第 n 個標記運算式在欄位中靠右對齊至少 w 個字元寬。 |
如果搜尋 a{[0-9]} 並取代成 \(10,1),則 "an" 會取代成整數並靠右對齊 10 個空格。 |
靠左欄位 |
\(-w,n) |
在取代運算式中,將第 n 個標記運算式在欄位中靠左對齊至少 w 個字元寬。 |
如果搜尋 a{[0-9]} 並取代成 \(-10,1),"an" 會取代成整數並靠左對齊 10 個空格。 |
防止比對 |
~(X) |
防止當 X 出現在運算式中時比對。 |
real~(ity) 會比對 "realty" 和 "really" 中的 "real",但不會比對 "reality" 中的 "real"。 |
英數字元 |
:a |
比對運算式 ([a-zA-Z0-9])。 |
比對任何英數字元,例如 "a"、"A"、"w"、"W"、"5" 等。 |
字母字元 |
:c |
比對運算式 ([a-zA-Z])。 |
比對任何字母字元,例如 "a"、"A"、"w"、"W" 等。 |
十進位數字 |
:d |
比對運算式 ([0-9])。 |
比對任何數字,例如 "4" 和 "6"。 |
十六進位數字 |
:h |
比對運算式 ([0-9a-fA-F]+)。 |
比對任何十六進位數字,例如 "1A"、"ef" 和 "007"。 |
有理數 |
:n |
比對運算式 (([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+))。 |
比對任何有理數,例如 "2007"、"1.0" 和 ".9"。 |
字母字串 |
:w |
比對運算式 ([a-zA-Z]+)。 |
比對只包含字母字元的任何字串。 |
逸出字元 |
\e |
Unicode U+001B。 |
比對「逸出」控制字元。 |
鈴聲 |
\g |
Unicode U+0007。 |
比對「鈴聲」控制字元。 |
退格鍵 (Backspace) |
\h |
Unicode U+0008。 |
比對「退格鍵」控制字元。 |
索引標籤 |
\t |
Unicode U+0009。 |
比對定位鍵字元。 |
Unicode 字元 |
\x#### 或 \u#### |
比對 Unicode 值所給定的字元,#### 是十六進位數字。您可以指定在基本多語系面 (也就是 Surrogate) 外的字元與 ISO 10646 字碼指標或給定 Surrogate 字組值的兩個 Unicode 字碼指標。 |
\u0065 會比對字元 "e"。 |
下表列出用來指定 Unicode 字元屬性資料庫中所列一般分類的兩個字母縮寫。您可以在規則運算式字元集使用這些縮寫。例如,運算式 [:Nd:Nl:No] 符合任何一種數字。
如需 Unicode 字元屬性資料庫的詳細資訊,請參閱 Unicode 標準 5.0 字元屬性 (英文)。
運算式 |
語法 |
說明 |
---|---|---|
大寫字母 |
:Lu |
比對任何一個大寫字母。 例如: :Luhe 會比對 "The" 而不會比對 "the"。 |
小寫字母 |
:Ll |
比對任何一個小寫字母。 例如: :Llhe 會比對 "the" 而不會比對 "The"。 |
標題大寫字母 |
:Lt |
比對混合大小寫字母的字元,例如 Nj 和 Dz。 |
修飾字母 |
:Lm |
比對用來表示對前置字母修飾的字母或標點符號,如逗號、十字符號和秒號。 |
其他字母 |
:Lo |
比對其他字母,如哥德語字母 ahsa。 |
十進位數字 |
:Nd |
比對十進位數字,如 0-9 和它們相同的全形。 |
字母數字 |
:Nl |
比對字母數字,如羅馬數字和表意的數字零。 |
其他數字 |
:No |
比對其他數字,如舊式的斜體數字一。 |
開啟標點符號 |
:Ps |
比對開啟標點符號,如括號和大括號。 |
關閉標點符號 |
:Pe |
比對關閉標點符號,如關閉的括號和大括號。 |
起始引號標點符號 |
:Pi |
比對起始雙引號。 |
最後引號標點符號 |
:Pf |
比對單引號和結束雙引號。 |
破折號標點符號 |
:Pd |
比對破折號。 |
連接標點符號 |
:Pc |
比對底線。 |
其他標點符號 |
:Po |
比對 ,、?、"、!、@、#、%、&、*、\、:、;、' 和 /。 |
空白分隔符號 |
:Zs |
比對空白。 |
行分隔符號 |
:Zl |
比對 Unicode 字元 U+2028。 |
段落分隔符號 |
:Zp |
比對 Unicode 字元 U+2029。 |
無間距記號 |
:Mn |
比對無間距記號。 |
合併記號 |
:Mc |
比對合併記號。 |
封閉式記號 |
:Me |
比對封閉式記號。 |
比對符號 |
:Sm |
比對 +、=、~、|、< 和 >。 |
貨幣符號 |
:Sc |
比對 $ 和其他的貨幣符號。 |
修飾符號 |
:Sk |
比對修飾符號,例如音調符號、低音符號和長音符號。 |
其他符號 |
:So |
比對其他符號,例如著作權符號、pilcrow 符號和溫度符號。 |
其他控制項 |
:Cc |
比對 Unicode 控制字元,例如 TAB 和 NEWLINE。 |
其他格式 |
:Cf |
格式控制字元,如雙向控制字元。 |
Surrogate |
:Cs |
比對 Surrogate 字組的一半。 |
其他私用 |
:Co |
比對任何來自私用區域的字元。 |
其他未指派 |
:Cn |
比對未對應至 Unicode 字元的字元。 |
除了標準 Unicode 字元屬性外,下列屬性也可指定為字元集的一部分。
運算式 |
語法 |
說明 |
---|---|---|
Alpha |
:Al |
比對任何一個字元。 例如,:Alhe 會比對 "The"、"then" 和 "reached" 等字。 |
數值 |
:Nu |
比對任何一個號碼或數字。 |
標點符號 |
:Pu |
比對任何一個標點符號,例如 ?、@、' 等。 |
空白區 |
:Wh |
比對所有空白區類型,例如發行和表意字元空白。 |
Bidi |
:Bi |
比對由右至左的指令碼字元,如阿拉伯文和希伯來文。 |
韓文 |
:Ha |
比對韓語 (Hangul) 和合併 Jamos。 |
平假名 |
:Hi |
比對平假名字元。 |
片假名 |
:Ka |
比對片假名字元。 |
表意字元/Han/Kanji |
:Id |
比對表意字元,如漢字。 |