I'm working on a regular expression and I just can't figure out what the problem is. I've tried several helping sites like http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx and http://gskinner.com/RegExr/ but somehow when I put the tested regular expression in c# it is not processed correctly
I'm working on a JSON string I can receive from JIRA. The heavily stripped down and beautified version of this JSON string is as follows:
{
"fields": {
"progress": {
"progress": 0,
"total": 0
},
"summary": "Webhook listener is working",
"timetracking": {},
"resolution": null,
"resolutiondate": null,
"timespent": null,
"reporter": {
"self": "http://removed.com/rest/api/2/user?username=removed",
"name": "removed@nothere.com",
"emailAddress": "removed@nothere.com",
"avatarUrls": {
"16x16": "http://www.gravatar.com/avatar/88994b13ab4916972ff1861f9cccd4ed?d=mm&s=16",
"24x24": "http://www.gravatar.com/avatar/88994b13ab4916972ff1861f9cccd4ed?d=mm&s=24",
"32x32": "http://www.gravatar.com/avatar/88994b13ab4916972ff1861f9cccd4ed?d=mm&s=32",
"48x48": "http://www.gravatar.com/avatar/88994b13ab4916972ff1861f9cccd4ed?d=mm&s=48"
},
"displayName": "Wubinator]",
"active": true
},
"updated": "2013-08-20T14:08:00.247+0200",
"created": "2013-07-30T14:41:07.090+0200",
"description": "Say what?",
"customfield_10001": null,
"duedate": null,
"issuelinks": [],
"customfield_10004": "73",
"worklog": {
"startAt": 0,
"maxResults": 0,
"total": 0,
"worklogs": []
},
"project": {
"self": "http://removed.com/rest/api/2/project/EP",
"id": "10000",
"key": "EP",
"name": "EuroPort+ Suite",
"avatarUrls": {
"16x16": "http://removed.com/secure/projectavatar?size=xsmall&pid=10000&avatarId=10208",
"24x24": "http://removed.com/secure/projectavatar?size=small&pid=10000&avatarId=10208",
"32x32": "http://removed.com/secure/projectavatar?size=medium&pid=10000&avatarId=10208",
"48x48": "http://removed.com/secure/projectavatar?pid=10000&avatarId=10208"
}
},
"customfield_10700": null,
"timeestimate": null,
"lastViewed": null,
"timeoriginalestimate": null,
"customfield_10802": null
}
}
I need to convert this JSON to a XML of course this is not directly possible because of the "16x16", "24x24", "32x32" and "48x48" bits inside the json which would be transformed into <16x16 />, <24x24 />, <32x32 /> and <48x48 /> tags which are invalid tags.
The receiver of the XML doesn't even need those avatar urls so I was thinking about stripping out the entire "avatarUrls":"{ ..... }, bit before handing the json over to JSON.NET for converting.
I was thinking about doing this using a regular expression. After some testing on the mentioned websites I came to the following regular expression:
("avatarUrls)(.*?)("displayName")
The Regex.Replace method should remove all found results instead of the third groep (a.k.a. "displayName")
The website http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx shows me the correct groups and find results and says that the mentioned regular expression should be used inside C# is:
@"(""avatarUrls)(.*?)(""displayName"")"
So inside C# I wrote the following:
string expression = @"(""avatarUrls)(.*?)(""displayName"")";
string result = Regex.Replace(json, expression, "$3");
return result;
When I look at the result after the RegexReplace nothing has been replaced. Does anyone see what I did wrong here?