c#正则表达式:如何用条件获取两个文本中的一个

本文关键字:两个 文本 一个 正则表达式 何用 获取 条件 | 更新日期: 2023-09-27 18:19:08

我写的是" [sex:he|she] took the dog for a walk "例如,在我从用户那里得到性别之后(1代表男性2代表女性)如果性别是男性那么我希望文本是"他遛狗去了"我该怎么做呢?

到目前为止,我只能使用group

来获取value
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);

但是我不能给它加上括号或者使用条件

c#正则表达式:如何用条件获取两个文本中的一个

您可以捕获每个值并使用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