Select string from within brackets - regex maybe ?

I have a string which looks something like this
{Rare,Medium,Gennemstegt}{Pommes,Bagt Kartoffel{Hvidløg,Krydder,Smør}}{Sovs1,Sovs2,Sovs3}

it can ofcause change alot - depending on user input

does anyone know a split command or alike which could give me the following result
arr(0) = {Rare,Medium,Gennemstegt}
arr(1) = {Pommes,Bagt Kartoffel{Hvidløg,Krydder,Smør}}
arr(2) = {Sovs1,Sovs2,Sovs3}

I was thinking of simply looping through the string and counting the number of { and  } once these were equal i would have my first string, then proceed however could this be done by a Regular Expression or ?
mSchmidtAsked:
Who is Participating?
 
NeoTeqConnect With a Mentor Commented:
The attached code does the job. Match groups 1 through 3 return your desired values. It should theoretically work with more than three groups, but that's untested.
using System;
using System.Text.RegularExpressions;
 
namespace Test {
	class Program {
		static void Main(string[] args) {
			string input = "{Rare,Medium,Gennemstegt}{Pommes,Bagt Kartoffel{Hvidløg,Krydder,Smør}}{Sovs1,Sovs2,Sovs3}";
			
			Match match = Regex.Match(input, "^({.*?})((?<=}){.*?}(?={))({.*?})$");
			
			foreach (Group group in match.Groups) {
				Console.WriteLine(group.Value);
			}
			
			Console.ReadLine();
		}
	}
}

Open in new window

0
 
mSchmidtAuthor Commented:
Yes very good, however why does it also return the entire string ?
0
 
NeoTeqCommented:
It does that because the entire regular expression matches the entire string... The three matching groups afterwards are the ones I told it to match with braces ( and ).
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.