正则表达式是一种简洁灵活的表示法,用于查找和替换文本模式。 可以在 SQL Server Management Studio 的查找和替换对话框查找什么字段中使用一组特定的正则表达式。
通过正则表达式进行查找
若要在 QuickFind、FindinFiles、Quick Replace 或 Replace in Files作期间在“查找内容”字段中启用正则表达式的使用,请选择“查找选项”下的“使用”选项,然后选择“正则表达式”。
“查找哪些字段”旁边的“三角引用列表”按钮变为可用。 单击此按钮可显示最常用的正则表达式的列表。 从表达式生成器中选择任何项时,它会插入到 查找内容 字符串中。
注释
正则表达式在 查找内容 字符串和在 Microsoft .NET Framework 编程中有效的字符串之间存在语法差异。 例如,在 “查找和替换”中,大括号表示法 {} 用于标记表达式。 因此,表达式“zo{1}”匹配“zo”的所有匹配项,后跟标记 1,如“Alonzo1”和“Gonzo1”。 但在 .NET Framework 中,表示法 {} 用于限定符。 因此,表达式“zo{1}”匹配所有出现的“z”后跟一个“o”的情况,例如“zone”,但不包括“zoo”。
下表描述了 引用列表中可用的正则表达式。
| 表达式 | 语法 | DESCRIPTION |
|---|---|---|
| 任何单个字符 | . | 匹配除换行符以外的任何单个字符。 |
| 零个或更多 | * | 匹配上述表达式的零个或多个匹配项,使所有可能的匹配项。 |
| 一个或更多 | + | 匹配前面表达式的一次或多次出现。 |
| 行首 | ^ | 将匹配字符串定位到行的开头。 |
| 行尾 | $ | 将匹配字符串定位到行尾。 |
| 单词开头 | < | 仅当单词在文本中此处开始时匹配。 |
| 单词结尾 | > | 仅当单词在文本中此时结束时才匹配。 |
| 换行符 | \n | 匹配独立于平台的换行符。 在 Replace 表达式中,插入换行符。 |
| 集合中的任意一个字符 | [] | 匹配 [] 中的任何一个字符。 若要指定字符范围,请列出以短划线(-)分隔的起始字符和结束字符,如 [a-z] 中所示。 |
| 不在字符集中任何一个字符 | [^...] | 与 ^后面的字符集中的任何字符不匹配。 |
| 或 | | | 匹配 OR 符号之前或之后的表达式(|)。 大多在团队中使用。 例如,(海绵|泥浆)浴与“海绵浴”和“泥浴”匹配。 |
| 逃跑 | |匹配反斜杠 (\) 后面的字符作为文本。 这样就可以查找正则表达式表示法中使用的字符,例如 { 和 ^。 例如,\^ 用于搜索 ^ 字符。 | |
| 标记表达式 | {} | 匹配用封闭表达式标记的文本。 |
| C/C++ 标识符 | :我 | 匹配表达式([a-zA-Z_$][a-zA-Z0-9_$]*)。 |
| 带引号的字符串 | :q | 匹配表达式(“[^”]*“)|('[^']*')). |
| 空格或制表符 | :b | 匹配空格或制表符。 |
| 整数 | :z | 匹配表达式([0-9]+)。 |
查找和替换操作中所有有效正则表达式的列表,长度超过了引用列表中可以显示的范围。 还可以将以下任一正则表达式插入“查找内容”的字符串:
| 表达式 | 语法 | DESCRIPTION |
|---|---|---|
| 最小值 - 零个或多个 | @ | 匹配上述表达式的零个或多个匹配项,匹配尽可能少的字符。 |
| 最小 - 一个或多个 | # | 匹配上述表达式的一个或多个匹配项,匹配尽可能少的字符。 |
| 重复 n 次 | ^n | 匹配前面表达式的 n 次出现。 例如,[0-9]^4 匹配任何四位数字序列。 |
| 分组 | () | 对子表达式进行分组。 |
| 第 n 个标记文本 | \n | 在 Find 或 Replace 表达式中,指示第 n 个标记表达式匹配的文本,其中 n 是介于 1 到 9 的数字。 在 Replace 表达式中,\0 插入整个匹配的文本。 |
| 右对齐字段 | \(w,n) | 在 Replace 表达式中,将第 n 个被标记的表达式在字段中右对齐,该字段至少要有 w 字符宽。 |
| 左对齐字段 | \(-w,n) | 在 Replace 表达式中,将字段中第 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]+)。 |
| 逃跑 | \e | Unicode U+001B。 |
| 钟 | \g | Unicode U+0007。 |
| 退格键 | \h | Unicode U+0008。 |
| 选项卡 | \t | 匹配制表符字符,Unicode U+0009。 |
| Unicode 字符 | \x#### 或 \u#### | 匹配 Unicode 值给出的字符,其中 #### 是十六进制数字。 可以使用 ISO 10646 码位或两个 Unicode 码位指定基本多语言平面(即代理项)之外的字符,从而提供代理项对的值。 |
下表列出了按标准 Unicode 字符属性匹配的语法。 双字母缩写与 Unicode 字符属性数据库中所列的缩写相同。 这些值可以指定为字符集的一部分。 例如,表达式 [:Nd:Nl:No] 匹配任何类型的数字。
| 表达式 | 语法 | DESCRIPTION |
|---|---|---|
| 大写字母 | :Lu | 匹配任意一个大写字母。 例如,:Luhe 匹配“The”,但与“the”匹配。 |
| 小写字母 | :Ll | 匹配任何一个小写字母。 例如,:Llhe 可以匹配“the”,但不能匹配“The”。 |
| 标题大小写字母 | :Lt | 匹配将大写字母与小写字母(如 Nj 和 Dz)组合在一起的字符。 |
| 修饰字母 | :Lm | 匹配字母或标点符号,例如逗号、叉形重音符和双撇号,用于指示对前面字母的修改。 |
| 其他字母 | :瞧 | 匹配其他字母,如哥特体字母 ahsa。 |
| 十进制数字 | :Nd | 匹配十进制数字,例如 0-9 及其全角等效项。 |
| 字母数字 | :吧 | 匹配字母数字,如罗马数字和象形数字零。 |
| 其他数字 | :不 | 匹配其他数字,例如古老的斜体数字一。 |
| 开放式标点 | :P | 匹配开头标点符号,例如左括号和花括号。 |
| 关闭标点符号 | Pe | 匹配像括号和大括号等末尾标点符号。 |
| 引号的初始标点符号 | :圆周率 | 匹配初始双引号。 |
| 最后引号标点符号 | :P f | 匹配单引号和结束双引号。 |
| 短划线标点符号 | :P d | 匹配短划线标记。 |
| 连接器标点符号 | :个人电脑 | 匹配下划线或底线标记。 |
| 其他标点符号 | :P o | 匹配 (,), ?, ",!,@,#,%,&, *, \, (:), (;), ' 和 /. |
| 空间分隔符 | :Zs | 匹配空白部分。 |
| 行分隔符 | :Zl | 匹配 Unicode 字符 U+2028。 |
| 段落分隔符 | :Zp | 匹配 Unicode 字符 U+2029。 |
| 非间距标记 | :锰 | 匹配非间距标记。 |
| 组合标记 | :司仪 | 匹配组合标记。 |
| 封闭标记 | :我 | 匹配封闭标记。 |
| 数学符号 | :Sm | 匹配 +、=、~、|、<和 >。 |
| 货币符号 | :Sc | 匹配 $ 和其他货币符号。 |
| 修改符号 | :Sk | 匹配修饰符符号,例如抑扬符号、重音符号和长音符号。 |
| 其他符号 | :所以 | 匹配其他符号,如版权符号、Pilcrow 符号和学位符号。 |
| 其他控件 | :Cc | 匹配行尾。 |
| 其他格式 | :Cf | 设置控件字符(如双向控件字符)的格式。 |
| 代理人 | :Cs | 匹配代理项对的一半。 |
| 其他专用用途 | :Co | 匹配专用区域中的任何字符。 |
| 未分配的其他 | :Cn | 匹配那些无法映射到 Unicode 字符的字符。 |
除了标准 Unicode 字符属性之外,还可以将以下附加属性指定为字符集的一部分。
| 表达式 | 语法 | DESCRIPTION |
|---|---|---|
| 阿尔法 | :铝 | 匹配任意一个字符。 例如,Alhe 能匹配“the”、“then”和“reached”等单词。 |
| 数值 | :Nu | 匹配任意一个数字。 |
| 标点 | :濮 | 匹配任何一个标点符号,例如 ?、@、',等等。 |
| 空格 | :Wh | 匹配所有类型的空白,包括排版和表意空白。 |
| Bidi | :Bi | 匹配从右到左的脚本(如阿拉伯语和希伯来语)中的字符。 |
| 韩语 | 哈 | 匹配韩国朝鲜文和组合 Jamos。 |
| 平假名 | :你好 | 匹配平假名字符。 |
| 片假名 | :卡 | 匹配片假名字符。 |
| 表意文字/汉字/日文汉字 | :Id | 匹配表意文字字符,如汉字和假名。 |