# If a regex match is found assign it to a variable

I am searching a string for a pattern that matches Material=. Some examples are Material=ABC123,Color=444555, Material=332212,Color=192929 I am new to C# and I learned about capture groups but I am wondering if its possible to do it in a cleaner way?

var pattern = new Regex("(?<label>Material)=(?<value>[^,]+)");
Match match = pattern.Match(Row2.Attributes);
var materialCode = (match.Success) ? match.Groups["value"].Value : "NA";


Edit:

I store materialCode into a database so it can't be null. If a value isn't found it has to be "NA". Also there are lots of combos which is why I specify I need whatever value after the = but before the , in the regex

• That looks like the right way to me. Feb 9 '18 at 23:35

Do not set the materialCode to another string. I am not sure, but NA might also be a valid choice for Material=<value>. Instead, just set it to null.
As for the pattern itself, instead of searching for [^,] (anything except ,), you should look for only the valid values. Based on the given examples, I'd assume that only alphanumericals are accepted. If there is a limit on the length, then you should specify that as well.
Since, you are only looking for values assigned to Material property; no need to store the word Material as a matched-group result.
Material=(?<value>[A-Z\d]{6})

• I store materialCode into a database so it can't be null. If a value isn't found it has to be "NA". Also there are lots of combos which is why I specify I need whatever value after the = but before the , Jan 10 '18 at 19:01