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

C# .NET正则需求:提取feedbackResultToast函数的引号内文本

修正C# .NET正则表达式匹配JS中feedbackResultToast函数调用并提取包裹文本

需求概述

JS文件中存在feedbackResultToast函数,需用C# .NET正则表达式匹配该函数的调用语句,提取其中被双引号(")、单引号(')或反引号(`)包裹的文本内容。原正则表达式存在误匹配无关代码的问题,需修正。

原正则问题

原正则:

^\s*feedbackResultToast\([^,]*, (?:result\.error \|\| )?([""'`].*[""'`])?,?[^,]*\);

会误匹配无feedbackResultToast的代码,例如:

if (data.action== "edit") {

或

textBtnModal: "Add",

问题根源:

  • .*为贪婪匹配,易跨行或过度匹配,甚至在错误模式下破坏前置匹配逻辑
  • 未处理引号内的转义字符(如\"、\'),导致匹配边界混乱
  • 参数部分的[^,]*写法过于宽泛,可能脱离函数调用的上下文匹配

修正后的正则表达式

针对提取第二个参数中引号包裹内容的场景

如果你的需求是提取类似feedbackResultToast(arg1, result.error || "操作成功", arg3);中引号内的文本,可使用以下正则:

^\s*feedbackResultToast\([^,]+,\s*(?:result\.error\s*\|\|\s*)?(?<q>["'`])(?<content>(?:\\.|(?!\k<q>).)*)\k<q>\s*(?:,[^)]*)?\);

通用匹配函数调用并提取所有引号内容的场景

如果需要匹配任意feedbackResultToast调用,并提取所有被引号包裹的内容,可使用:

^\s*feedbackResultToast\((?:[^"'`()]+|(?<q>["'`])(?<content>(?:\\.|(?!\k<q>).)*)\k<q>|\([^()]*\))*\);

使用说明

  1. 在C#中使用时,需启用RegexOptions.Multiline模式,确保^匹配每一行的开头,避免跨行误匹配
  2. 针对第一个场景,可通过捕获组content直接获取引号内的文本(不含引号)
  3. 正则支持引号内的转义字符,例如"it\'s a test"或`he said \"hello\"`这类内容都能正确匹配

内容的提问来源于stack exchange,提问作者Bohdan Voznyi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:20:03