为什么这个正则表达式在RegexBuddy中工作而在.NET中不工作
是否有以下原因不应在via.Net中工作,而应在RegexBuddy中工作 字符串:为什么这个正则表达式在RegexBuddy中工作而在.NET中不工作,.net,regex,.net,Regex,是否有以下原因不应在via.Net中工作,而应在RegexBuddy中工作 字符串: formatter:'number',formatoptions:{decimalSeparator:'.',decimalPlaces:2,defaulValue:0} 表达模式: [a-zA-Z]+:({)??([a-zA-Z]+[:](')??[a-zA-Z0-9.,]+(?(3)'|,?),?)+(?(1)}|.) 在regex buddy中生成匹配,但在.net中失败 private static
formatter:'number',formatoptions:{decimalSeparator:'.',decimalPlaces:2,defaulValue:0}
表达模式:
[a-zA-Z]+:({)??([a-zA-Z]+[:](')??[a-zA-Z0-9.,]+(?(3)'|,?),?)+(?(1)}|.)
在regex buddy中生成匹配,但在.net中失败
private static List<string> GetObjectProps(this string str, out string strWithOutObjectProps)
{
var lst = new List<String>();
var temp = str;
Regex RegexObj = new Regex("[a-zA-Z]+:({)??([a-zA-Z]+[:](')??[a-zA-Z0-9.,]+(?(3)'|,?),?)+(?(1)}|.)");
Match MatchResults = RegexObj.Match(str);
while(MatchResults.Success) //fails
{
lst.Add(MatchResults.Value);
temp = MatchResults.Index > 0
? temp.Substring(0, MatchResults.Index - 1) +
temp.Substring(MatchResults.Index + MatchResults.Length)
: temp.Substring(MatchResults.Index + MatchResults.Length);
MatchResults = MatchResults.NextMatch();
}
strWithOutObjectProps = temp;
return lst;
}
虽然这个表达式在a/c上并不完美,因为它必须使分隔符可选以避免后面的分隔符,但是有什么想法可以避免这个问题吗 我知道RegexBuddy模拟.NET Regex引擎。它实际上并不直接运行它。例如,这些限制包括一个。但您可能刚刚偶然发现了其他一些不兼容。你可能想了解它或者在他们的论坛上发布,这样他们就可以研究它了
作为测试,您还可以尝试直接从.NET正则表达式引擎运行的正则表达式。经过一些调整后,这就是我想到的:
var reg = new Regex("\s+(?<name>[a-zA-Z]*)\s+:\s+(?<value>('.*')|(\".*\")|[^,}]*)");
var input = "{ decimalSeparator : \",\", decimalPlaces : 2, defaulValue : 0 }";
var matches = reg.Matches(input);
var name = matches[0].Groups["name"];
var value = matches[0].Groups["value"];
var reg=new Regex(“\s+(?[a-zA-Z]*)\s+:\s+(?('.'''.')|(\“*”)|[^,}]*)”;
var input=“{decimalSeparator:\”,\”,小数位数:2,defaulValue:0}”;
变量匹配=注册匹配(输入);
变量名称=匹配[0]。组[“名称”];
变量值=匹配[0]。组[“值”];
我对您想要的东西做了一些假设,所以如果他们错了,请告诉我。您是否在RegexBuddy中选择了相同的正则表达式引擎?您在RegexBuddy中使用了什么语言?RegexBuddy屏幕左侧有一个下拉框,您可以在其中为不同的语言选择合适的regex,有JGsoft、.NET、Posix BRE、Posix ERE、Java、Perl、Python、Ruby等等,但也有少数人认为有人需要使用合适的JSON解析器等一下。。。这甚至不是有效的JSON。我建议你首先访问是的gumbo它完全一样,是否选择了c#,w.r.t JSON我知道JSON,它是有效的JSON?当然不是,这是一个稍后要整理的部分,感谢rob的编辑,确保它更具可读性
var reg = new Regex("\s+(?<name>[a-zA-Z]*)\s+:\s+(?<value>('.*')|(\".*\")|[^,}]*)");
var input = "{ decimalSeparator : \",\", decimalPlaces : 2, defaulValue : 0 }";
var matches = reg.Matches(input);
var name = matches[0].Groups["name"];
var value = matches[0].Groups["value"];