如何使用正则表达式搜索文本

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

以下正则表达式可以替换 SQL Server Management Studio“查找和替换”对话框的“查找内容”字段中的字符或数字。

先决条件

如何启用正则表达式

以下是在搜索中启用正则表达式的步骤。

  1. 转到“编辑”>“查找和替换>“快速查找”
  2. 在搜索栏旁边,选择“向下箭头”>“在文件中查找”
  3. “查找和替换 ”窗口中,展开 “查找”选项,然后选择“ 使用正则表达式”。

“查找内容”字段旁边的“表达式生成器”按钮将变为可用状态。 选择此按钮可显示一组可用的正则表达式。 从 表达式生成器中选择任何项时,它将插入 到“查找”中的字符串 中。

下表对“表达式生成器”中提供的正则表达式进行了说明。

表达式 DESCRIPTION
. 与任何单个字符匹配(换行符除外)。
.* 零次或多次匹配任何字符
.+ 一次或多次匹配任何字符
[abc] 匹配 abc 集中的任何字符
[^abc] 匹配不在 abc 集中的任何字符
\d 匹配任意数字字符
(?([^\r\n])\s) 与任何空格字符匹配
\b 在单词的开头或结尾匹配
^ 在行首匹配
.$ 匹配任何换行符
\w\r?\n 匹配行尾的单词字符
(dog | cat) 捕获表达式 dog | cat 并对其进行隐式编号
(?<pet>dog | cat) 捕获子表达式 dog | cat 并将其命名为 pet

例子

一些使用正则表达式的示例。

示例 1:查找所有 select 语句

想要查找 T-SQL 脚本中的所有 SELECT 语句。

SELECT\s+.*\s+FROM

示例 1 说明

  • SELECT\s+:匹配后跟一个或多个空格字符的单词 SELECT
  • .*:匹配任何字符(行终止符除外)零次或多次。
  • \s+FROM:匹配一个或多个空格字符,后跟单词 FROM

示例 2:查找具有特定命名模式的过程

想要查找以 T-SQL 脚本开头 usp_ 的所有存储过程。

CREATE\s+PROCEDURE\s+usp_[A-Za-z0-9_]+

示例 2 说明

  • CREATE\s+PROCEDURE\s+:匹配后跟一个或多个空格字符的单词 CREATE PROCEDURE
  • usp_:与文本字符串 usp_匹配。
  • [A-Za-z0-9_]+:匹配一个或多个字母数字字符或下划线。

示例 3:在 T-SQL 脚本中查找注释

你想要在 T-SQL 脚本中标识所有单行注释(以 --开头)。

--.*

示例 3 说明

  • --:与文本字符串 --匹配。
  • .*:匹配任何字符(行终止符除外)零次或多次。

示例 4:查找所有更新语句

想要查找 T-SQL 脚本中的所有 UPDATE 语句。

UPDATE\s+.*\s+SET

示例 4 说明

  • UPDATE\s+:匹配后跟一个或多个空格字符的单词 UPDATE
  • .*:匹配任何字符(行终止符除外)零次或多次。
  • \s+SET:匹配一个或多个空格字符,后跟单词 SET

示例 5:在 DDL 语句中查找表名

你想要从 CREATE TABLE T-SQL 脚本中的语句中提取表名。

CREATE\s+TABLE\s+(\w+)

示例 5 说明

  • CREATE\s+TABLE\s+:匹配后跟一个或多个空格字符的单词 CREATE TABLE
  • (\w+):匹配一个或多个单词字符(字母数字和下划线),并捕获它们进行提取。

有关更多示例,请参阅 Visual Studio 中的正则表达式