SQL Server 2008 R2如何使用正則表達式搜索


正則表達式是簡明而靈活的表示法,用於查找和替換各種模式的文本。在 SQL Server Management Studio 的“查找和替換”對話框中的“查找內容”字段中,可以使用一組特定的正則表達式。

使用正則表達式進行查找

  1. 若要在“快速查找”“在文件中查找”“快速替換”或 “在文件中替換” 操作過程中,在“查找內容”字段啟用正則表達式,請在“查找選項”下選中“使用”,再選擇“正則表達式”

  2. “查找內容”字段旁邊的“引用列表”三角形按鈕將變為可用狀態。單擊此按鈕可顯示一組最常用的正則表達式。如果選擇了表達式生成器中的某個項,則可將該項插入“查找內容”字符串。

注意注意

“查找內容”字符串中使用的正則表達式與 Microsoft .NET Framework 編程中的有效正則表達式相比,語法上存在差異。例如,在“查找和替換”對話框中,大括號 {} 用於表示帶標記的表達式。所以,表達式“zo{1}”將匹配所有“zo”后帶標記 1 的匹配項,如“Alonzo1”和“Gonzo1”。但在 .NET Framework 中,{} 符號用於表示量詞。因此,表達式“zo{1}”將匹配所有“z”后跟一個“o”的匹配項,如匹配“zone”,但不匹配“zoo”。

下表對“引用列表”中提供的正則表達式進行了說明。

 

表達式

語法

說明

任何單個字符

.

匹配除換行符外的所有單一字符。

零個或更多

*

匹配零或更多前導表達式的匹配項,執行所有可能的匹配。

一個或更多

+

匹配至少一個前導表達式的匹配項。

行首

^

僅匹配行首位置的字符串。

行尾

$

僅匹配行尾位置的字符串。

字首

<

僅匹配文本中以此開頭的字。

字尾

>

僅匹配文本中以此結尾的字。

分行符

\n

匹配與平台無關的換行符。在替換表達式中,插入一個換行符。

在集合中的任何一個字符

[]

匹配 [] 中的任何一個字符。若要指定字符范圍,請列出起始字符和結束字符,並用短划線 (-) 分隔,如 [a-z]。

不在集合中的任何一個字符

[^...]

匹配不在 ^ 之后的字符集中的任何一個字符。

|

匹配“或”符號 (|) 兩旁的任一表達式。常用於組中。例如,(sponge|mud) bath 可以匹配“sponge bath”和“mud bath”。

Escape

\

將反斜杠 (\) 后的字符作為文字匹配。此表達式允許您搜索正則表達式標記中使用的符號,如 { 和 ^。例如, \^ 可用於查找字符 ^。

標記表達式

{}

匹配用括起來的表達式內的文本。

C/C++ 標識符

:i

匹配表達式 ([a-zA-Z_$][a-zA-Z0-9_$]*)。

用引號括起來的字符串

:q

匹配表達式 (("[^"]*")|('[^']*'))。

空格或制表符

:b

匹配空格或制表符。

整數

:z

匹配表達式 ([0-9]+)。

“引用列表”中只列出了部分可在“查找和替換”操作中使用的正則表達式。還可以將下列任一正則表達式插入“查找內容”字符串:

 

表達式

語法

說明

最少 - 零個或更多

@

匹配零個或更多前導表達式的匹配項,匹配盡可能少的字符。

最少 - 一個或更多

#

匹配一個或更多前導表達式的匹配項,匹配盡可能少的字符。

重復 n 次

^n

匹配前導表達式的 n 個匹配項。例如,[0-9]^4 匹配所有四位數序列。

分組

()

將子表達式分組

第 n 個標記文本

\n

“查找或替換”表達式中,指示匹配第 n 個標記表達式的文本,其中 n 為 1 到 9 之間的數字。

“替換”表達式中,\0 將插入完整的匹配文本。

右對齊字段

\(w,n)

“替換”表達式中,在寬度至少為 w 個字符的字段中,右對齊第 n 個標記表達式。

左對齊字段

\(-w,n)

“替換”表達式中,在寬度至少為 w 個字符的字段中,左對齊第 n 個標記表達式。

阻止匹配

~(X)

如果在表達式的此處出現 X,則阻止匹配。例如,real~(ity) 匹配“realty”和“really”中的“real”,但不匹配“reality”中的“real”。

字母數字字符

:a

匹配表達式 ([a-zA-Z0-9])。

字母字符

:c

匹配表達式 ([a-zA-Z])。

十進制數字

:d

匹配表達式 ([0-9])。

十六進制數

:h

匹配表達式 ([0-9a-fA-F]+)。

有理數

:n

匹配表達式 (([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+))。

字母字符串

:w

匹配表達式 ([a-zA-Z]+)。

Escape

\e

Unicode U+001B。

響鈴

\g

Unicode U+0007。

Backspace

\h

Unicode U+0008。

制表符

\t

匹配制表符,Unicode U+0009。

Unicode 字符

\x#### 或 \u####

匹配由 Unicode 值確定的字符,其中 #### 為十六進制數字。可以使用 ISO 10646 碼位或給出代理項對值的兩個 Unicode 碼位,指定基本多語言面(即代理項)以外的字符。

下表列出了按標准 Unicode 字符屬性匹配時的語法。雙字母縮寫和 Unicode 字符屬性數據庫中列出的縮寫相同。可以將這些縮寫指定為字符集的一部分。例如,表達式 [:Nd:Nl:No] 匹配任何數字。

 

表達式

語法

說明

大寫字母

: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

匹配其他符號,如版權符號、段落標記和度數符號。

其他控制

:Cc

匹配行尾。

其他格式

:Cf

格式化控制字符,如雙向控制字符。

代理項

:Cs

匹配代理項對的一半。

其他專門用途

:Co

匹配任何專用區域的字符。

其他未分配字符

:Cn

匹配未映射到 Unicode 字符的字符。

除了標准的 Unicode 字符屬性以外,還可以將下列附加屬性指定為字符集的一部分。

 

表達式

語法

說明

字母

:Al

匹配任何單字符。例如,:Alhe 匹配“The”、“then” 和“reached”之類的字。

Numeric

:Nu

匹配任何數字。

標點

:Pu

匹配任意一個標點符號,如 ?、@、' 等等。

空格

:Wh

匹配任何類型的空格,包括印刷空格和表意空格。

雙向

:Bi

匹配自右至左書寫的字符,如阿拉伯語和希伯萊語字符。

朝鮮文字

:Ha

匹配朝鮮文字字母和組合字母。

平假名

:Hi

匹配平假名字符。

片假名

:Ka

匹配片假名字符。

象形/漢字/日文漢字

:Id

匹配象形字符,如漢字和日文漢字。

用於查找文本的正則表達式

Expression Studio 4.0
 
其他版本
 
此主題尚未評級 評價此主題
 

通過使用正則表達式,可以在 Microsoft Expression Web 中執行繁復的查找和替換操作。如果您不知道所要查找的確切文本或代碼,或者要查找文本或代碼字符串的多個匹配項,則可以使用正表達式。

正則表達式是一種文本模式,它可以描述所要查找的文本的一種或多種變體。正則表達式由特定字符(如字母“a”到“z”)和描述文本模式的特殊字符(如星號“*”)組成。例如,要在網站中查找“page”的所有變體,可以搜索“page*”。這樣,Expression Web 將在網站中查找“page”、“pages”、“pager”以及以“page”開頭的任何其他單詞的所有實例。

在搜索中使用正則表達式時,特定的規則將控制哪些字符組合將執行特定的匹配操作。每種正則表達式(或正則表達式的組合)都稱為“語法”。可以在一個語法中使用多個正則表達式以精確匹配要搜索的目標。

若要使用正則表達式,請參閱使用查找和替換編輯多個網頁

正則表達式語法

 
語法 表達式說明

.

任意字符 用作換行符 (\n) 以外的任何單個打印或非打印字符的通配符。

例如,正則表達式 c.t 可匹配 cat、c t、cot 等字符串,但不能匹配 cost。在本例中,句點 (.) 是一個代表單個字符的通配符。它出現在字母“c”和“t”之間,因此字符“c”和“t”之間的任何單個字符都與表達式匹配 - 即使是空格也一樣。

*

最大為零或更多 用於匹配在此表達式之前出現零次或更多次的某個字符,可與盡可能多的字符相匹配。

正則表達式 .* 用於匹配某個出現零次或更多次的字符。

例如,正則表達式 b.*k 可匹配 book、back、black、blank 和 buck。在本例中,將句點 (.) 和星號 (*) 組合成一個語法。句號 (.) 緊挨在星號 (*) 表達式之前。星號 (*) 可匹配“b”和“k”之間任意出現零次或更多次的字符。句點 (.) 用作“b”和“k”之間字符的通配符。在本例中,它表示“b”和“k”之間的任意字符都可以反復出現。

+

最大為一或更多    用於匹配在此表達式之前出現一次或更多次的某個字符,可與盡可能多的字符相匹配。

正則表達式 .+ 用於匹配某個出現一次或更多次的字符。

例如,正則表達式 bo+. 可匹配 bob、book 和 boot。在本例中,將句點 (.) 和加號 (+) 組合成一個語法。句號 (.) 緊挨在加號 (+) 表達式之后。加號 (+) 可與出現一次或更多次的字母“o”相匹配。句點 (.) 用作每個單詞的最后一個字符的通配符。在本例中,該字符為“b”、“k”和“t”。

@

最小為零或更多    用於匹配在此表達式之前出現零次或更多次的某個字符,可與盡可能少的字符相匹配。

正則表達式 .@ 用於匹配某個出現零次或更多次的字符。

例如,正則表達式 a.@x 可匹配“abxbxb”中的“abx”和“acxcxc”中的“acx”。在本例中,將句號 (.) 和 @ 符號組合成一個語法。句點 (.) 緊挨在 @ 符號表達式之前。@ 符號可與“a”和“x”之間出現零次或更多次的任意字符相匹配。在本例中,句點 (.) 用作字符“a”和“x”之間的字符“b”和“c”的通配符。

#

最小為一或更多    用於匹配在此表達式之前出現一次或更多次的某個字符,可與盡可能少的字符相匹配。

例如,正則表達式 si.#er 可匹配“sicker”或“silkier”。在本例中,將句號 (.) 和井號 (#) 組合成一個語法。句點 (.) 緊挨在井號 (#) 表達式之前。井號 (#) 可與“si”和“er”之間出現一次或更多次的任意字符相匹配。句點 (.) 用作單詞 sicker 中字符“c”和“k”的通配符,以及單詞 silkier 中“l”、“k”和“i”的通配符。

[ ]

字符集    用於匹配括號 ([ ]) 內的任意一個字符。可以使用連字符 (-) 指定字符的范圍,例如 [a-z]。

例如:

  • 正則表達式 c[aou]t 可以匹配 cat、cot 和 cut,但不能匹配 cet 或 cit。

  • 正則表達式 [0-9] 表示匹配任意一個數字。也可以指定多個字母范圍。

  • 正則表達式 [A-Za-z] 表示匹配所有大寫和小寫字母。

^

行首    定位於行首匹配。

例如,正則表達式 ^When in 匹配以“When in”開頭且出現於行首的任意字符串,例如“When in the course of human events”或“When in town, call me”。然而,此正則表達式不匹配出現於行首的“What and when in the course of human events”。

$

行尾    定位於行尾匹配。

例如,正則表達式 professional$ 可匹配字符串“He is a professional”,但不能匹配字符串“They are a group of professionals”。

^^

文件開頭    定位於文件開頭匹配。僅適用於在源代碼或文本文件中搜索文本。

例如,若要匹配文件開頭的第一個 HTML 標記,請使用此正則表達式:^^

$$

文件末尾    定位於文件末尾匹配。僅適用於在源代碼或文本文件中搜索文本。

例如,若要匹配文件末尾的最后一個 HTML 標記(標記后沒有空格),可使用此正則表達式:$$

|

    表示在兩項之間進行選擇,即匹配“或”符號 (|) 前面或后面的表達式。

例如,正則表達式 (him|her) 匹配下列各項:“it belongs to him”或者“it belongs to her”但不匹配行“it belongs to them”。

\

轉義特殊字符    用於匹配反斜線 (\) 后面的字符。這樣,就可以查找正則表達式語法中使用的字符(如左大括號 ({) 或脫字號 (^))或其他一些特殊字符。

例如,使用 \$ 可匹配美元符號 ($) 字符,而不是執行用於“定位於行尾”的正則表達式。同樣,使用 \. 可匹配句號 (.) 字符,而不是像句號 (.) 正則表達式一樣匹配任意一個字符。

{}

標記表達式    對與括號內表達式匹配的文本加標記。可以使用 \N 在“查找”表達式中匹配出現在另一處的標記文本或者將標記文本插入“替換”表達式。

例如,假設要查找連續出現兩次的單詞。若要搜索,請使用此表達式:{.#} \1

假設連續出現的單詞由一個空格隔開,則需要在右大括號 (}) 與反斜線 (\) 之間添加一個空格。

在本例中,將井號 (#)、句號 (.) 和大括號 ({}) 組合成一個語法。在此表達式中,.# 表示任何連續的字符。因為這部分表達式位於大括號 ({}) 內,所以連續的字符將被加上標記,並被引用為 \1。此表達式將查找后跟空格以及字符與其完全相同的任意連續字符。

\N

第 N 個標記表達式    在“查找”表達式中,\N 匹配由第 N 個標記表達式指定的文本,其中 N 是 1 到 9 的數字。

在“替換”表達式中,\N 插入由第 N 個標記表達式匹配的文本,其中 N 是 1 到 9 之間的數字。\0 插入整個“查找”表達式指定的文本。

例如,假設要查找連續出現兩次的單詞,並使用一個單詞替換它們。若要搜索,請使用此表達式:.#} \l

假設連續出現的單詞由一個空格隔開,則需要在右大括號 (}) 與反斜線 (\) 之間添加一個空格。在本例中,將井號 (#)、句號 (.) 和大括號 ({}) 組合成一個語法。

若要替換,請使用下列表達式:\l

\1 表示在查找字符串中的第一對大括號內找到的內容。通過在替換操作中使用 \1,實際上是將連續出現兩次的單詞替換為一個單詞。

( )

組表達式    標記子表達式的開始和結束。

子表達式指括在 ( ) 中的正則表達式,例如表達式:(ha)+。在本例中,將加號 (+) 與括號 ( ) 組表達式組合成一個語法。子表達式是 (ha),因為它括在括號 ( ) 內。添加加號 (+) 后,該表達式可查找重復的字母對。加號 (+) 表示“ha”出現一次或更多次。

此表達式可匹配下列各項:“haha”和“hahaha”。

~x

防止匹配    當 x 出現在表達式中的此位置時會防止匹配。

例如,正則表達式 real~(ity) 可匹配“realty”和“really”中的“real”,但不能匹配“reality”中的“real”。

\n

換行符    用於匹配“代碼”視圖中的新行,或“設計”視圖中的 <br>。

語法 (\n) 是匹配所有換行符的簡便方法。

\t

制表符    用於匹配單個制表符。

例如,如果要查找所有位於行首的制表符,可使用此正則表達式:

^\t+

在本例中,將脫字號 (^)、加號 (+) 和制表符 (\t) 組合成一個語法。脫字號 (^) 位於單個制表符表達式之前,用於匹配位於行首的所有制表符。加號 (+) 表示匹配一個或多個制表符。

[^]

任何一個不屬於該集合的字符    用於匹配不包含在脫字號 (^) 之后的字符集內的任何字符。

例如,若要匹配范圍之外的任何字符,可使用脫字號 (^) 作為左括號后面的第一個字符。表達式 [^269A-Z] 匹配除 2、6、9 以及任何大寫字母之外的所有字符。

n

重復表達式    用於匹配脫字號 (^) 之前出現 n 次的表達式。

例如,若 n 為 4,表達式 [0-9]^4 匹配任何 4 位數序列。在本例中,將字符集 ([ ]) 語法與重復 (^n) 語法組合,以展示正則表達式的更實用的方法。

:a

字母數字字符    用於匹配表達式 [a-zA-Z0-9]。

可以使用表達式 [a-zA-Z0-9] 匹配出現一次的字母(大寫或小寫)或數字。也稱為“字母數字匹配項”。可使用簡寫表達式 :a 來代替 [a-zA-Z0-9]。

:b

空格    用於匹配代碼或文本中的任何空格。

例如,若要匹配行首的單個空格字符,請使用此正則表達式:^:b

:c

字母字符    用於匹配表達式 [a-zA-Z]。使用此表達式時,可以匹配所有大寫或小寫字母。

可以使用簡寫表達式 :c 來代替所有 [a-zA-Z]。

:d

十進制數    用於匹配表達式 [0-9]。利用此表達式可以匹配任何數字。

例如,假設要在文本文件中查找美國的社會福利號。美國的社會福利號的格式為 999-99-9999。:d^3-:d^2-:d^4 或 [0-9]^3-[0-9]^2-[0-9]^4(使用 [0-9] 表示)可返回相同的結果。

可使用簡寫表達式 :d 來代替所有 [0-9]。

:h

十六進制數 用於匹配表達式 [0-9a-fA-F]+

使用此表達式可匹配由“A”和“F”之間的大寫或小寫字母和任意數字組成的十六進制數。

例如,假設網站中的網頁使用了多種不同的背景色,而您要將這些網頁的顏色改為黑色(即 000000)。但是,您不知道現有顏色的十六進制值。使用此正則表達式可查找所有的現有十六進制值:

\#:h

可以使用 [0-9a-fA-F] 進行搜索,但在本例中,將反斜線 (\)、井號 (#) 和十六進制數字 (:h) 語法組合在一起。\# 匹配非表達式的井號 (#),而 :h 匹配任何十六進制字符序列。

若要替換現有十六進制數值,可鍵入所需背景顏色的十六進制數值: 000000

:i

標識符    用於匹配表達式 [a-zA-Z_$][a-zA-Z0-9_$]*

處理代碼時,如果需要匹配所有程序標識符,可使用簡寫表達式 :i,而無需鍵入上述冗長的表達式。

:n

有理數    用於匹配表達式 ([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)|([0-9]+)

如果需要匹配帶小數點的整個數值,可使用簡寫表達式 :n,而無需鍵入上述冗長的表達式。

:q

帶引號的字符串    用於匹配表達式 ("[~"]*")|('[~']*')

如果需要匹配加引號的所有引號,可使用簡寫表達式 :q,而無需鍵入上述冗長的表達式。

:w

字母字符串    用於匹配表達式 [a-zA-Z]+

此語法是一種可匹配一個或多個大寫或小寫字母字符的簡便方法。

:z

整數    用於匹配表達式 [0-9]+

此語法是一種可匹配任何整數的簡便方法。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM