How about looping and detecting trademark characters such as ( and ):
string[] test = "P,MV,A1ZWR,MAV#(X,,), PV,MOV#(X,12,33),LO".Split(',');
bool insideElement = false;
string insideElementResult = "";
List<string> result = new List<string>();
foreach (string s in test)
{
//Determine context:
if (s.IndexOf("(") > -1)
insideElement = true;
//Determine where to add my nice string
if (!insideElement)
result.Add(s);
else
insideElementResult += s;
//Determine if contact has ended:
if (s.IndexOf(")") > -1)
{
insideElement = false;
result.Add(insideElementResult);
insideElementResult = null;
}
else if (insideElement)
{
insideElementResult += ",";
}
}
results in:
[0] "P" string
[1] "MV" string
[2] "A1ZWR" string
[3] "MAV#(X,,)" string
[4] " PV" string
[5] "MOV#(X,12,33)" string
[6] "LO" string
Granted, not as fancy as regex, and will break on inner parenthesis, but hey, it works ;)