規則運算式語言- 快速參考 - Microsoft Docs
文章推薦指數: 80 %
expression 會解譯為零寬度判斷提示。
若要避免具名或編號的擷取群組模棱兩可,您可以選擇性地使用明確的判斷提示,如下所示:
跳到主要內容
已不再支援此瀏覽器。
請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。
下載MicrosoftEdge
其他資訊
目錄
結束焦點模式
閱讀英文
儲存
目錄
閱讀英文
儲存
Twitter
LinkedIn
Facebook
電子郵件
目錄
規則運算式語言-快速參考
發行項
06/23/2022
22位參與者
本文內容
規則運算式是規則運算式引擎嘗試在輸入文字中比對的模式。
模式是由一個或多個字元常值、運算子或建構所組成。
如需簡介,請參閱.NET規則運算式。
此快速參考中的每一節都列出您可以用於定義規則運算式的特定某類字元、運算子和建構。
我們也以兩種格式提供這項資訊,您可以下載和列印以方便參考:
下載Word(.docx)格式
以PDF(.pdf)格式下載
逸出字元
規則運算式中的反斜線字元(\)表示接在後面的字元是特殊字元(如下表所示),或應該解譯為常值。
如需詳細資訊,請參閱CharacterEscapes。
逸出的字元
描述
模式
相符項
\a
比對警示字元\u0007。
\a
"Error!"+'\u0007'中的"\u0007"
\b
在字元類別中,比對退格鍵\u0008。
[\b]{3,}
"\b\b\b\b"中的"\b\b\b\b"
\t
比對定位點\u0009。
(\w+)\t
"item1\titem2\t"中的"item1\t"、"item2\t"
\r
比對歸位字元\u000D(\r不等於新行字元\n。
)
\r\n(\w+)
"\r\nTheseare\ntwolines."中的"\r\nThese"
\v
比對垂直定位點\u000B。
[\v]{2,}
"\v\v\v"中的"\v\v\v"
\f
比對換頁字元\u000C。
[\f]{2,}
"\f\f\f"中的"\f\f\f"
\n
比對新行字元\u000A。
\r\n(\w+)
"\r\nTheseare\ntwolines."中的"\r\nThese"
\e
比對逸出字元\u001B。
\e
"\x001B"中的"\x001B"
\nnn
使用八進位表示法指定字元(nnn由兩位數或三位數組成)。
\w\040\w
"abcd"中的"ab"、"cd"
\xnn
使用十六進位表示指定字元(nn由剛好兩位數組成)。
\w\x20\w
"abcd"中的"ab"、"cd"
\cX\cX
比對X或x所指定的ASCII控制字元,其中X或x是控制字元的字母。
\cC
"\x0003"中的"\x0003"(Ctrl-C)
\unnnn
使用十六進位表示比對Unicode字元(剛好四位數,如nnnn所表示)。
\w\u0020\w
"abcd"中的"ab"、"cd"
\
當後面加上的字元不是這張表和本主題其他表格中指出的逸出字元時,則比對該字元。
例如,\*與\x2A相同,而\.與\x2E相同。
這可讓規則運算式引擎釐清語言項目(例如*或?)和字元常值(以\*或\?表示)。
\d+[\+-x\*]\d+
"(2+2)*3*9"中的"2+2"和"3*9"
字元類別
字元類別會比對一組字元中的任何一個字元。
字元類別包含下表列出的語言項目。
如需詳細資訊,請參閱字元類別。
字元類別
描述
模式
相符項
[character_group]
比對character_group中的任何單一字元。
根據預設,比對會區分大小寫。
[ae]
"gray"中的"a""lane"中的"a"、"e"
[^character_group]
否定:比對不在character_group中的任何單一字元。
根據預設,character_group中的字元會區分大小寫。
[^aei]
"reign"中的"r"、"g"、"n"
[第一-最後]
字元範圍:比對範圍中第一到最後一個字元中的任何單一字元。
[A-Z]
"AB123"中的"A"、"B"
.
萬用字元:比對除了以外的\n任何單一字元。
若要比對常值句號字元(。
或\u002E),您必須在前面加上逸出字元()\.。
a.e
"nave"中的"ave""water"中的"ate"
\p{名字}
比對Unicode一般類別或名稱所指定之具名區塊中的任何單一字元。
\p{Lu}\p{IsCyrillic}
"CityLights"中的"C"、"L""ДЖem"中的"Д"、"Ж"
\P{名字}
比對不在Unicode一般類別或名稱所指定之具名區塊中的任何單一字元。
\P{Lu}\P{IsCyrillic}
"City"中的"i"、"t"、"y""ДЖem"中的"e"、"m"
\w
比對任何單字字元。
\w
"IDA1.3"中的"I"、"D"、"A"、"1"、"3"
\W
符合任何非單字字元。
\W
"IDA1.3"中的""、"."
\s
比對任何空白字元。
\w\s
"IDA1.3"中的"D"
\S
比對任何非空白字元。
\s\S
"int__ctr"中的"_"
\d
符合任何十進位數。
\d
"4=IV"中的"4"
\D
比對十進位數以外的任何字元。
\D
"4=IV"中的""、"="、""、"I"、"V"
錨點
錨點(即原子零寬度判斷提示)會造成根據字串中的目前位置來決定比對成功或失敗,但不會造成引擎在字串中前進或是取用字元。
下表列出的metacharacter是錨點。
如需詳細資訊,請參閱錨點。
Assertion
描述
模式
相符項
^
根據預設,比對必須在字串的開頭開始;在多行模式中,它必須在一行的開頭開始。
^\d{3}
"901-333-"中的"901"
$
根據預設,比對必須發生在字串的結尾或字串結尾的\n之前;在多行模式中,它必須發生在一行的結尾之前,或一行結尾的\n之前。
-\d{3}$
"-901-333"中的"-333"
\A
比對必須發生在字串開頭。
\A\d{3}
"901-333-"中的"901"
\Z
比對必須發生在字串結尾,或發生在字串結尾的\n之前。
-\d{3}\Z
"-901-333"中的"-333"
\z
比對必須發生在字串結尾。
-\d{3}\z
"-901-333"中的"-333"
\G
比對必須發生在前一個比對結束的點,或者如果先前沒有相符專案,則發生在字串中開始比對的位置。
\G\(\d\)
"(1)(3)(5)[7](9)"中的"(1)"、"(3)"、"(5)"
\b
比對必須發生在\w(英數)和\W(非英數)字元之間的界限上。
\b\w+\s\w+\b
"themthemethemthem"中的"themtheme"、"themthem"
\B
比對不可以發生在\b界限上。
\Bend\w*\b
"endsendsendurelender"中的"ends"、"ender"
分組建構
分組建構會描寫規則運算式的子運算式,而且通常會擷取輸入字串的子字串。
分組建構包含下表列出的語言元素。
如需詳細資訊,請參閱群組建構。
分組建構
描述
模式
相符項
(subexpression)
擷取符合的子運算式,並指派以一為起始的序號給它。
(\w)\1
"deep"中的"ee"
(?subexpression)或(?'名字'subexpression)
將符合的子運算式擷取到具名群組中。
(?
如需詳細資訊,請參閱群組建構中的<平衡群組定義>一節。
(((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$
"3+2^((1-3)*(3-1))"中的"((1-3)*(3-1))"
(?:subexpression)
定義非擷取型群組。
Write(?:Line)?
"Console.WriteLine()"中的"WriteLine""Console.Write(value)"中的"Write"
(?imnsx-imnsx:subexpression)
套用或停用subexpression內指定的選項。
如需詳細資訊,請參閱正則運算式選項。
A\d{2}(?i:\w+)\b
"A12xlA12XLa12xl"中的"A12xl"、"A12XL"
(?=subexpression)
零寬度右合樣(PositiveLookahead)判斷提示。
\b\w+\b(?=.+and.+)
"cats","dogs"in"cats,dogsandsomemice."
(?!subexpression)
零寬度右不合樣(NegativeLookahead)判斷提示。
\b\w+\b(?!.+and.+)
"and","some","mice"in"cats,dogsandsomemice."
(?<=subexpression)
零寬度左合樣(PositiveLookbehind)判斷提示。
\b\w+\b(?<=.+and.+)———————————\b\w+\b(?<=.+and.*)
"some","mice"in"cats,dogsandsomemice."————————————"and","some","mice"in"cats,dogsandsomemice."
(?subexpression)
不可部分完成的群組。
(?>a|ab)c
"ac"in"ac"nothingin"abc"
一目了然
當正則運算式引擎叫用查詢運算式時,它會取得從目前位置到開始(lookbehind)或end(lookahead)原始字串的子字串,然後使用lookaround模式在該子字串上執行Regex.IsMatch。
然後,這個子運算式的結果成功取決於其為正或負判斷提示。
Lookaround
Name
函數
(?=check)
正面外觀
判斷提示字串中目前位置緊接著的內容是「check」
(?<=check)
正向外觀
判斷提示字串中目前位置前面緊接的專案為「check」
(?!check)
負向外觀
判斷提示字串中目前位置緊接著的內容不是「檢查」
(?
命名的反向參考。
比對具名運算式的值。
(?
這些建構包含下表列出的語言元素。
如需詳細資訊,請參閱替代建構。
替代建構
描述
模式
相符項
|
比對由分隔號(|)字元所隔開的任何一個項目。
th(e|is|at)
"thisistheday."中的"the"、"this"
(?(表達)是的|不)或(?(表達)是的)
如果expression所指定的規則運算式模式相符,則比對yes,否則比對選擇性的no部分。
expression會解譯為零寬度判斷提示。
若要避免具名或編號的擷取群組模棱兩可,您可以選擇性地使用明確的判斷提示,如下所示:(?((?=表達))是的|不)
(?(A)A\d{2}\b|\b\d{3}\b)
"A10C103910"中的"A10"、"910"
(?(名字)是的|不)或(?(名字)是的)
如果name(具名或編號擷取群組)有相符項目,則比對yes,否則比對選擇性的no。
(?
如需詳細資訊,請參閱替代。
下表列出的metacharacter是原子零寬度判斷提示。
字元
描述
模式
取代模式
輸入字串
結果字串
$數量
替代群組number所比對的子字串。
\b(\w+)(\s)(\w+)\b
$3$2$1
"onetwo"
"twoone"
${名字}
替代具名群組name所比對的子字串。
\b(?
\b(\d+)\s?USD
$$$1
"103USD"
"$103"
$&
替代整個符合項目的複本。
\$?\d*\.?\d+
**$&**
"$1.30"
"**$1.30**"
$`
替代輸入字串中符合字串前面的所有文字。
B+
$`
"AABBCC"
"AAAACC"
$'
替代輸入字串中符合字串後面的所有文字。
B+
$'
"AABBCC"
"AACCCC"
$+
替代已擷取的最後一個群組。
B+(C+)
$+
"AABBCCDD"
"AACCDD"
$_
替代整個輸入字串。
B+
$_
"AABBCC"
"AAAABBCCCC"
規則運算式選項
您可以指定選項,以控制規則運算式引擎如何解譯規則運算式模式。
這些選項中有許多可以指定為內嵌(在規則運算式模式中)或是一個或多個RegexOptions常數。
這個快速參考只列出內嵌選項。
如需內嵌和RegexOptions選項的詳細資訊,請參閱規則運算式選項。
您可以透過兩種方式指定內嵌選項:
藉由使用其他建構(?imnsx-imnsx),其中選項或選項組關閉這些選項之前,減號()。
例如,(?i-mn)會開啟不區分大小寫的比對(i)、關閉多行模式(m),以及關閉未命名的群組擷取(n)。
選項會從定義該選項的位置開始套用至規則運算式模式並且保持生效,直到模式結尾或出現另一個建構反轉選項為止。
使用群組建構(?imnsx-imnsx:子運算式),其只會定義指定群組的選項。
.NET正則運算式引擎支援下列內嵌選項:
選項
描述
模式
相符項
i
使用不區分大小寫的比對方式。
\b(?i)a(?-i)a\w+\b
"aardvarkAAAutoaaaAutoAdambreakfast"中的"aardvark"、"aaaAuto"
m
使用多行模式。
^和$會比對行的開頭與結尾,而不是字串的開始和結尾。
如需範例,請參閱正則運算式選項中的一節。
n
不擷取未命名的群組。
如需範例,請參閱正則運算式選項中的「僅限明確擷取」一節。
s
使用單行模式。
如需範例,請參閱正則運算式選項中的「單行模式」一節。
x
忽略規則運算式模式中未逸出的空白字元。
\b(?x)\d+\s\w+
"1aardvark2catsIVcenturions"中的"1aardvark"、"2cats"
其他建構
其他建構會修改規則運算式模式或提供其相關資訊。
下表列出.NET所支援的其他建構。
如需詳細資訊,請參閱其他建構。
建構
定義
範例
(?imnsx-imnsx)
在模式中間設定或停用選項,例如不區分大小寫。
如需詳細資訊,請參閱規則運算式選項。
\bA(?i)b\w+\b會比對"ABAAbleAct"中的"ABA"、"Able"
(?#評論)
內嵌註解。
註解會在第一個右括號結束。
\bA(?#MatcheswordsstartingwithA)\w+\b
#[至行尾]
X模式註解。
註解從未逸出的#開始,並延續到行尾。
(?x)\bA\w+\b#MatcheswordsstartingwithA
另請參閱
System.Text.RegularExpressions
System.Text.RegularExpressions.Regex
[規則運算式]
規則運算式類別
規則運算式-快速參考(以Word格式下載)
規則運算式-快速參考(以PDF格式下載)
本文內容
延伸文章資訊
- 1簡易Regular Expression 入門指南
而Regular Expression(以下簡稱RE) 其實就只是把這些規則用特定的格式轉換成符號而已。之所以需要學這一套,是因為它應用最廣泛,幾乎每個程式語言都有 ...
- 2規則運算式語言- 快速參考 - Microsoft Docs
expression 會解譯為零寬度判斷提示。 若要避免具名或編號的擷取群組模棱兩可,您可以選擇性地使用明確的判斷提示,如下所示:
- 3Regular expression - Wikipedia
A regular expression is a sequence of characters that specifies a search pattern in text. Usually...
- 4正規表示式- 維基百科,自由的百科全書
Regular Expression的Regular一般被譯為正規、正則或常規。 此處的Regular即是規則、規律的意思,Regular Expression即「描述某種規則的表達式」之 ...
- 5re — Regular expression operations — Python 3.10.5 ...
Regular expressions use the backslash character ( '\' ) to indicate special forms or to allow spe...