考虑以下JSON:
第1名:
{
"Good": {
"a": "<good>",
"c": "<better>",
"e": "<best>"
},
"Bad": {
"a": "<bad>",
"c": "<worse>",
"e": "<worst>"
}
}
第二名:
{
"Good": {
"a": "<kind of good>",
"c": "<more good>",
"e": "<the most good>"
},
"Bad": {
"a": "<a little bad>",
"c": "<more bad>",
"e": "<the most bad>"
}
}
第3名:
{
"Good": {
"a": "<good>",
"c": "<better>",
"e": "<best>"
},
"Bad": {
"a": "<bad>",
"c": "<better>",
"e": "<worst>"
}
}
在所有情况下,我都必须提取财产&#34; c&#34;并且它来自对象&#34; Good&#34;的值,用值进行一些操作,然后用新值替换旧值。
问题在于对象&#34; Bad&#34;。我对那个对象的价值不感兴趣,我不应该替换那里的任何东西 到目前为止,我想出了那个正则表达式:
(?<!Bad)"c": "(<.*?>)"
明显的问题是对象的名称&#34; Bad&#34;不在财产之前&#34; c&#34;马上,may(和will)之间的符号不同。并且,据我所知,lookbehind应该是固定的长度,所以我不能使用这样的东西:
(?<!Bad.*)"c": "(<.*?>)"
我在C#中使用正则表达式,所以我想到了第一次出现,但它不是最可靠的解决方案,它仍然无法解决更换问题。
谈论替换。我想过动态创建正则表达式以确保只替换正确的事件。但是对于第三个例子,这个技巧不会起作用,因为"c": "(<better>)"
会匹配对象和#34; Good&#34;和&#34;坏&#34;。
有人可以帮助我吗?