像这样的东西应该工作:
string text = "$gender(he|she|it|alien)";
string pattern = @"\$(\w+)\(([\w\|]*)\)";
Match match = Regex.Match(text, pattern);
string varName = match.Groups[1].Value;
string[] values = match.Groups[2].Value.Split('|');
Console.WriteLine(varName + ": ");
foreach (string value in values)
{
Console.WriteLine(" " + value);
}
这是它打印出来的:
gender:
he
she
it
alien
varName
具有变量的名称,然后values
是包含每个选项的字符串数组。
但是,如果你输入一些"$gender()"
没有值的东西,或者"$gender(he|she|)"
最后有一个额外的管道,你会在结果中得到空字符串。如果这可能是一个问题,请尝试以下操作:
string[] values = match.Groups[2].Value.Split('|').Where((s) => !string.IsNullOrEmpty(s)).ToArray();