You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用正则处理多行代码的查找替换(MOQ迁移至NSubstitute)

解决MOQ转NSubstitute的多行正则匹配问题

针对你遇到的多行MOQ代码无法用正则匹配的问题,核心是要开启跨行匹配模式,让正则能识别换行符,同时精准捕获需要转换的代码片段。以下是具体方案:

正则表达式(支持跨行)

查找正则

(?s)(\w+\.objectStorageMock)\.Setup\(broker =>\s*broker\.(\w+)\((.*?)\)\s*\)\s*\.ThrowsAsync\((.*?)\);

替换表达式

$1.$2($3).ThrowsAsync($4);

关键说明

  1. 跨行模式启用:正则开头的(?s)是DOTALL模式标记,让.可以匹配换行符,完美覆盖多行格式化的MOQ代码。
  2. 捕获组对应关系:
    • $1:捕获mock实例(比如this.objectStorageMock)
    • $2:捕获目标方法名(比如InsertCalendarAsync)
    • $3:捕获方法参数(比如someCalendar)
    • $4:捕获异常对象(比如npgsqlException)

工具适配注意事项

  • Visual Studio:勾选"使用正则表达式"选项即可,(?s)已内置跨行支持。
  • Notepad++:除了选择"正则表达式"搜索模式,还要勾选". matches newline",或者保留正则开头的(?s)。
  • JetBrains系列(Rider/Resharper):开启正则搜索模式后,(?s)会自动生效。

扩展调整

如果你的mock实例命名不固定(比如有_objectStorageMock这类写法),可以把查找正则里的\w+\.objectStorageMock改成更通用的([\w_]+\.[\w_]+),适配不同的命名风格。

替换完成后建议抽查部分结果,避免复杂参数场景下的误匹配(比如参数里包含嵌套括号的情况,若遇到可进一步优化正则的参数捕获逻辑)。

内容的提问来源于stack exchange,提问作者Sachith Wickramaarachchi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:01:04