在 Visual Studio 中使用規則運算式
Visual Studio 使用 .NET Framework 規則運算式來尋找和取代文字。在 Visual Studio 2010 (含) 以前版本中,Visual Studio 會在 [尋找和取代] 視窗中使用自訂規則運算式語法。本主題說明如何將部分較常用的自訂規則運算式符號轉換成 .NET 版本。
提示 |
---|
在 Windows 作業系統中,大部分的程式行都是以 "\r\n" 結尾 (新行後面接著歸位字元)。這些字元不可見,但是會顯示在編輯器中,並傳遞至 .NET 規則運算式服務。 |
如需詳細資訊,請參閱 .NET Framework 規則運算式。
提示 |
---|
如需有關取代模式中所用之規則運算式的詳細資訊,請參閱在規則運算式中執行替代。若要使用已編號的擷取的群組,請使用語法 $1 指定編號的群組,以及使用 (x) 指定該群組。例如,群組規則運算式 (\d)([a-z]) 在下列字串中找到四個相符項目:1a 2b 3c 4d。取代字串 z$1 會將該字串轉換為 z1 z2 z3 z4>。在 Visual Studio 2010 中,群組規則運算式的對等語法是 {:z}([a-z]),取代字串的對等語法是 z\1。 |
比較 .NET Framework 規則運算式
您可以使用下表,將舊版 Visual Studio 使用的規則運算式版本轉換為 .NET Framework 規則運算式。
用途 |
新增 |
舊 |
新範例 |
---|---|---|---|
比對任何單一字元 (分行符號除外) |
. |
. |
a.o 比對出 "around" 中的 "aro" 和 "about" 中的 "abo",而不是 "across" 中的 "acro"。 |
比對先前運算式中零個或多個項目 (比對的字元越多越好) |
* |
* |
a*r 會比對 "rack" 中的 "r"、"ark" 中的 "ar",以及 "aardvark" 中的 "aar" |
比對任何字元零或多次 (萬用字元 *) |
.* |
.* |
c.*e 會比對 “racket” 中的“cke”、“comment” 中的 “comme”,以及 “code” 中的 “code” |
比對先前運算式中一個或多個項目 (比對的字元越多越好) |
+ |
+ |
e.+e 會比對 "feeder" 中的 "eede",但不比對 "ee"。 |
比對任何字元一或多次 (萬用字元 ?) |
.+ |
.+ |
e.+e 會比對符合 "feeder" 中的 "eede",但不符合 "ee"。 |
比對先前運算式中零個或多個項目 (比對的字元越少越好) |
*? |
@ |
e.*?e 會比對 "feeder" 中的 "ee",但不比對 "eede"。 |
比對先前運算式中一個或多個項目 (比對的字元越少越好) |
+? |
# |
e.+?e 會比對符合 "enterprise" 中的 "ente" 及 "erprise",但是不符合完整單字 "enterprise"。 |
將比對字串錨定至行首或字串開頭 |
^ |
^ |
只有在 "car" 在行首時,^car 才會比對這個字。 |
將比對字串錨定至行尾 |
\r?$ |
$ |
End\r?$ 只會比對出現在行結尾的 "end"。 |
比對集合中的任何單一字元 |
[abc] |
[abc] |
b[abc] 會比對 "ba"、"bb" 和 "bc"。 |
比對字元範圍之間的任何字元 |
[a-f] |
[x-y] |
be[n-t] 會比對 "between" 中的 "bet"、"beneath" 中的 "ben" 和 "beside" 中的 "bes",但無法在 "below" 中比對。 |
擷取和隱含編號在括號內的運算式 |
() |
() |
([a-z])X\1 會比對 "aXa" 和 "bXb",但不會比對 "aXb"。"。“\1” 表示第一個運算式群組 “[a-z]”。 |
使比對失效 |
(?!abc) |
~(abc) |
real (?!ity) 會比對 "realty" 和 "really" 中的 "real",但不會比對 "reality" 中的 "real"。它也會在 "realityreal" 中找到第二個 "real" (但不是第一個 "real")。 |
比對所有不在特定一組字元中的字元。 |
[^abc] |
[^abc] |
be[^n-t] 會比對 "before" 中的 "bef"、"behind" 中的 "beh",以及 "below" 中的 "bel",但無法在 "beneath" 中比對。 |
比對符號之前或之後的運算式。 |
| |
| |
(sponge|mud) bath 會比對 "sponge bath" 和 "mud bath"。 |
逸出反斜線之後的字元 |
\ |
\ |
\^ 比對字元 ^。 |
指定前置字元或群組的出現次數。 |
{x},其中 x 是發生次數。 |
\x,其中 x 是發生次數。 |
x(ab){2}x 會比對符合 "xababx",而 x(ab){2,3}x 會比對符合 "xababx" 和 "xabababx",但不符合 "xababababx"。 |
比對 Unicode 字元類別中的文字,"X" 是 Unicode 數字。如需 Unicode 字元類別的詳細資訊,請參閱 |
\p{X} |
:X |
\p{Lu} 會比對 "Thomas Doe" 中的 "T" 和 "D"。 |
比對字邊界 |
\ b (在字元類別之外 \ b 會指定字邊界,在字元類別指定內則會指定退格鍵)。 |
< 和 > 指定文字的開始和結束 |
\bin 會比對 "inside" (而非 "pinto") 中的 "in"。 |
比對分行符號 (即新行後面接著歸位字元)。 |
\r?\n |
\n |
End\r?\nBegin 會比對符合 "End" 和 "Begin",但 "End" 必須是一行的最後一個字串,且 "Begin" 是下一行的第一個字串。 |
比對任何英數字元 |
\w |
:a |
a\wd 會比對 "add" 和 "a1d",但不會比對 "a d"。 |
比對任何空白字元。 |
(?([^\r\n])\s) |
:b |
Public\sInterface 會比對 "Public Interface" 這個片語。 |
比對任何數字字元 |
\d |
:d |
\d 會比對 "3456" 中的 "3"、"23" 中的 "2" 和 "1" 中的 "1"。 |
比對 Unicode 字元 |
\uXXXX 其中 XXXX 指定 Unicode 字元值。 |
\uXXXX 其中 XXXX 指定 Unicode 字元值 |
\u0065 會比對字元 "e"。 |
比對識別項 |
\b(_\w+|[\w-[0-9_]]\w*)\b |
:i |
會比對 "type1",但不比對 & type1" 或 "#define"。 |
比對引號內的字串 |
((\".+?\")|('.+?')) |
:q |
比對單引號或雙引號內的任何字串。 |
比對十六進位數字 |
\b0[xX]([0-9a-fA-F])\b |
:h |
比對 "0xc67f" 而非 "0xc67fc67f"。 |
比對整數和小數 |
\b[0-9]*\.*[0-9]+\b |
:n |
會比對 "1.333"。 |