C#如何精准提取Json::$product->后的目标字段?
提取PHP代码中
Json::$product->后的目标字段方案 原正则的问题
你之前的正则有两个核心问题:
- 转义错误:C#字符串里
$只需单次转义,写成\\$product会匹配字面量的\$product,而非你需要的$product - 匹配逻辑宽泛:用
\S*会捕获多余的前后内容,无法精准定位目标字段
精准提取的正则方案
根据你描述的目标字段格式(大写字母、下划线、数字组成),用以下正则可以精准捕获:
var matches = Regex.Matches(str, @"Json::\$product->([A-Z_0-9]+)", RegexOptions.IgnoreCase);
其中([A-Z_0-9]+)是捕获分组,专门匹配目标字段,会自动停在分号、括号、空格等非字段字符前。
提取处理代码
遍历匹配结果,直接取分组1的内容即可得到目标字段:
foreach (Match match in matches) { string targetField = match.Groups[1].Value; MessageBox.Show(targetField); // 输出MILK、PETIBOR_BISCUIT等目标字段 }
兼容更多格式的优化方案
如果目标字段可能包含小写字母,或者格式不确定,可以调整正则为:
// 用负向断言确保字段后不是字母数字下划线,避免捕获多余内容 var matches = Regex.Matches(str, @"Json::\$product->(\w+)(?!\w)", RegexOptions.IgnoreCase);
内容的提问来源于stack exchange,提问作者Habip Oğuz
相关产品推荐
相关产品推荐

