.NET正则表达式匹配求助:匹配含斜杠的引号括号包裹内容
.NET正则匹配修正方案
你的需求是匹配格式为("包含至少一个/的任意字符内容")的字符串,原正则存在误匹配问题,核心原因是未约束双引号内的内容边界,贪婪匹配逻辑可能导致跨范围匹配。以下是修正后的实现方案:
修正后的正则与代码
public const string myRegEx = @"\(""[^""\\]*(?:\\.[^""\\]*)*\/[^""\\]*(?:\\.[^""\\]*)*""\)"; Regex forwardSlashesRegEx = new Regex(myRegEx); if (forwardSlashesRegEx.IsMatch(mystring)) { // 存在符合规则的匹配项,执行对应逻辑 }
正则规则拆解
\(:精准匹配开头的左括号"":匹配双引号(C#中使用@前缀时,双引号需用两个""转义)[^""\\]*:匹配任意数量的非双引号、非转义符字符,避免提前触发闭合逻辑(?:\\.[^""\\]*)*:处理转义字符(比如\"),确保转义的双引号不会被误判为闭合符,同时继续匹配后续内容\/:匹配至少一个正斜杠,满足内容必须包含/的核心要求- 后续的
[^""\\]*(?:\\.[^""\\]*)*:匹配正斜杠之后的内容,直到遇到未转义的闭合双引号 ""\):精准匹配结尾的双引号和右括号
特殊场景适配
如果允许双引号内的内容包含换行符,只需在创建Regex实例时添加RegexOptions.Singleline选项:
Regex forwardSlashesRegEx = new Regex(myRegEx, RegexOptions.Singleline);
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

