c#正则表达式:如何用条件获取两个文本中的一个
本文关键字:两个 文本 一个 正则表达式 何用 获取 条件 | 更新日期: 2023-09-27 18:19:08
我写的是" [sex:he|she] took the dog for a walk
"例如,在我从用户那里得到性别之后(1代表男性2代表女性)如果性别是男性那么我希望文本是"他遛狗去了"我该怎么做呢?
到目前为止,我只能使用group
来获取valueRegex 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);
评估者可以用适当的反应替换任何组:
private string Evaluator(Match match)
{
if (match.Groups["name"].Value == "sex")
{
if (m_IsMale)
{
return match.Groups["value1"].Value;
}
else
{
return match.Groups["value2"].Value;
}
}
// No replacement, return the original value.
return match.Value;
}
上面的结果是
he took the dog with him
或
she took the dog with her