在 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 字元類別的詳細資訊,請參閱

Unicode Standard 5.2 字元屬性 (英文)。

\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"。

請參閱

其他資源

尋找和取代文字