C# C正则表达式:如何从两个带条件的文本中获取一个?

C# C正则表达式:如何从两个带条件的文本中获取一个?,c#,C#,我有过类似的经历[性:他/她]带着狗散步 在我从用户那里得到性别后,例如1代表男性2代表女性 如果性别是男性,那么我希望文本是他带狗散步 我该怎么做 到目前为止,我所拥有的只是我可以使用组获得价值 Regex r = new Regex("^(?<name>\\w+):(?<value>\\w+)"); Match m = r.Match("Section1:119900"); Console.WriteLine(m.Groups["name"].Value); C

我有过类似的经历[性:他/她]带着狗散步 在我从用户那里得到性别后,例如1代表男性2代表女性 如果性别是男性,那么我希望文本是他带狗散步 我该怎么做


到目前为止,我所拥有的只是我可以使用组获得价值

Regex r = new Regex("^(?<name>\\w+):(?<value>\\w+)");
Match m = r.Match("Section1:119900"); 

Console.WriteLine(m.Groups["name"].Value); 
Console.WriteLine(m.Groups["value"].Value);

但是我不能给它添加括号,也不能使用条件,你可以捕获每个值,然后使用MatchEvaluator来处理这些组

string inputString = "[sex:he|she] took the dog with [sex:him|her]";
string result = Regex.Replace(inputString, @"\[(?<name>[^:]+):(?<value1>[^\|]+)\|(?<value2>[^\]]+)\]", Evaluator);
上述结果是:

he took the dog with him


您为此做了哪些尝试?到目前为止,我所能做的就是使用组Regex r=new Regex^?\\w+:?\\w+;匹配m=r。匹配截面1:119900;Console.WriteLinem.Groups[name].Value;Console.WriteLinem.Groups[value].value;但我不能给它加括号或使用condition@Mark“替换”对我没有帮助,因为值可以更改,但仍然无法更改。为什么不将用户选择附加到字符串“带狗散步”中?这一切似乎都是不必要的后处理编辑:如果是女性,则只需将字母s添加到字符串开头
he took the dog with him
she took the dog with her