ReSharper 2025.2 Help

正则表达式辅助功能

ReSharper 提供了一套丰富的工具来处理 .NET 正则表达式。 您可以快速分析现有表达式,查找并修复错误。 在输入新表达式时,ReSharper 提供自动补全和验证功能。

字符串文本中的正则表达式

默认情况下,ReSharper 仅处理 模式 参数中的正则表达式,以及 Regex 类的方法。 然而,包含正则表达式的字符串可以定义在不同的位置:字符串常量、字段、其他方法的参数等。 如果您希望 ReSharper 将字符串作为正则表达式处理,您有三种不同的选项:

  • 使用上下文操作:将光标放在字符串中,按 Alt+Enter 并选择 标记为 .NET 正则表达式

    ReSharper 会将与字符串对应的符号范围标记为正则表达式,将此范围保存在其内部数据库中,并在包含文件更改时持续跟踪。 这种方式非常快速且直接,但有两个缺点:范围可能在外部文件更改(如 VCS 合并)后丢失,并且以这种方式标记的注入仅会在本地跟踪。

    如果您稍后决定禁用将字符串作为正则表达式处理,可以使用 移除 .NET 正则表达式标记 上下文操作。

  • 另一种方式是使用 [正则表达式模式特性]JetBrains.Annotations 注释您的自定义方法、公共字段或属性的参数为正则表达式。

    如果您的项目目标是 .NET 7 或更高版本,您还可以使用 [StringSyntaxAttribute] 和相应的构造函数: [字符串语法(StringSyntaxAttribute.Regex)]

    ReSharper 将处理方法调用和赋值中的相应参数为正则表达式:

    参数中的正则表达式高亮
  • 第三种方式是在字符串文本之前添加注释 /*language=regexp|jsregexp*/。 这些注释需要一些输入,可能会污染您的代码,但另一方面,它们使阅读您代码的每个人都能清楚地了解您的意图,它们不会丢失,并且任何使用 ReSharper 打开您的代码的人都能在标记的字符串中获得相同的功能。 顺便说一下,这些注释的格式与 基于 IntelliJ 平台的 IDE 兼容。

    带注释的 C# 字符串中的正则表达式注入

语法高亮

ReSharper 高亮显示正则表达式中的语法结构、错误和冗余:

正则表达式的高亮显示

高亮颜色具有以下含义:

  • 浅蓝色 – 字符类、锚点和量词

  • 浅绿色 – 分组结构

  • 橙色 – 集合结构

  • 粉色和浅粉色 – 转义序列

  • 绿色 – 注释

  • 红色带波浪下划线 – 错误

  • 蓝色波浪下划线 – 警告

当您将插入点放在分隔符之一时,组、组名和集合中的匹配括号会被高亮显示。 您可以使用 ReSharper 选项的 高亮匹配的分隔符 设置在 环境 | 编辑器 | 外观 页面上切换和调整此高亮显示。

默认情况下,ReSharper 会高亮显示所有非逐字字符串中的正确和错误的转义序列:

字符串中转义序列的高亮显示

If necessary, you can turn this highlighting off by clearing the 高亮显示字符串字面量中的特殊字符 checkbox on the 代码检查 | 设置 page of ReSharper options.

修复错误

要修复正则表达式中的错误,请将光标放在红色高亮处,按 Alt+Enter ,然后选择相应的 快速修复

正则表达式错误最常见的示例是误用转义字符。

正则表达式错误

ReSharper 帮助您自动修复错误:

使用 ReSharper 修复正则表达式错误

验证和测试

ReSharper 允许您在设计时或调试时验证和测试您的正则表达式模式。 在“验证正则表达式”对话框中,您可以输入各种示例字符串,并查看您的正则表达式如何匹配这些字符串。 该对话框可通过主菜单访问: ReSharper | 工具 | 验证正则表达式…。 使用此对话框,您可以修复表达式并确保获得所需的匹配结果。

验证正则表达式

ReSharper 应用标准的 .NET 正则表达式引擎进行处理,因此表达式的工作方式与运行时完全相同。 示例字符串中的所有匹配项都会被高亮显示。

此外,匹配项会以树视图的形式显示,按匹配项、匹配项中的组以及组的所有捕获(如果有两个以上)进行分类。 您可以在树中选择节点以高亮显示示例字符串和正则表达式中的相应部分(如果选择了组或捕获)。

验证代码中的正则表达式

  1. 将光标放置在正则表达式上。

  2. Alt+Enter 或单击光标左侧的 操作指示器以打开 操作列表

  3. 选择 测试正则表达式 上下文操作

  4. 在打开的 验证正则表达式 对话框中,在 测试输入 区域提供一些示例字符串。

    要同时测试多个示例字符串,请用新行分隔字符串并选中 分别检查行 复选框。 请注意,在这种情况下,示例应为单行字符串。

  5. 使用 选项 列表设置将在对话框中验证表达式时使用的 正则表达式选项

  6. 匹配项 表格将列出测试输入中正则表达式的所有匹配项。 您可以单击匹配项以在测试输入中定位它们。

  7. 如果正则表达式按预期工作,请单击 插入 将其插入回代码中。

IntelliSense

ReSharper 为几乎所有 .NET 正则表达式结构提供 IntelliSense 支持。 在补全列表中,每个结构都会显示简要描述。

正则表达式中的代码补全

在正则表达式中,您可以使用以下类型的 IntelliSense:

  • 自动补全 - 在输入 \([ 字符后触发

  • 基本补全 Control+Space – 显示当前范围内可用的元素

  • 类型匹配补全 Control+Shift+Space – 显示当前范围内最可能的元素

  • 双重补全Control+Space 两次)– 显示所有可能的元素

在使用 Match.Groups 属性 时,您也可以从 ReSharper 的 IntelliSense 中受益。 ReSharper 检测表达式中的组名称,并在补全列表中建议它们:

组名称补全

提取预编译正则表达式

如果您需要重用在 正则表达式 类的静态方法中使用的正则表达式,可以将其提取为预编译的正则表达式。

要提取正则表达式,请将光标放置在方法调用中的任意位置,按 Alt+Enter 并选择 转换为预编译正则表达式 上下文操作。

例如,您可以从 模式 参数的 IsMatch 方法中提取正则表达式:

public void Bar() { var result = Regex.IsMatch("Input", "Pattern"); }

应用上下文操作后,模式会被提取到一个静态字段中:

private static readonly Regex Regex1 = new Regex("Pattern"); public void Bar() { var result = Regex1.IsMatch("Input"); }

此功能在以下语言和技术中 受支持

语言:C#

语言:VB.NET

语言:C++

语言:ASP.NET

语言:Razor

语言:XAML

语言:Resx

语言:构建脚本

语言:SQL

此功能在 C# 中可用

此功能在 Visual Basic 中不可用

功能在 C++ 中不可用

此功能在 ASP.NET 中不可用

此功能在 Razor 中不可用

此功能在 XAML 中不可用

此功能在资源文件中不可用

此功能在构建脚本文件中不可用

此功能在 SQL/NoSQL 文件和注入中不可用

此处提供的说明和示例针对在 C# 中使用该功能。 有关其他语言的更多信息,请参阅 语言和框架 部分中的相应主题。

最后修改日期: 2025年 9月 27日