帮助简化几个正则表达式

时间:2011-04-13 17:34:03

标签: c# regex

下面我有两个正则表达式对某些文本进行操作:

假设key =“old”和value =“new”

text = Regex.Replace(text,
    "\\." + change.Key + ",",
    "." + change.Value + ","
    );
text = Regex.Replace(text,
    "\\." + change.Key + ";",
    "." + change.Value + ";"
    );

所以,“。old”和“.old;”将分别改为“.new”和“.new;”。

我确信这可以缩短为一个正则表达式。我怎么能这样做,只有当逗号和分号位于变量的末尾时,字符串才会改变?例如,我不希望“.oldQ”更改为“.newQ”。谢谢!

4 个答案:

答案 0 :(得分:2)

.NET使用$进行反向引用:

text = Regex.Replace(text,
    @"\." + change.Key + "([,;])",
    "." + change.Value + "$1");

答案 1 :(得分:0)

出乎我的意料:

text = Regex.Replace(text, @"\.(old|new),",@"\.\1;");

答案 2 :(得分:0)

您只想更改中间部分,所以:

text = Regex.Replace(text,
    "\\." + change.Key + "(,|;)^",   // mark a group using "()" for substitution...
    "." + change.Value + "\1"       // use the group ("\1")
    );

答案 3 :(得分:0)

我喜欢使用\ b,像这样:

text = Regex.Replace(text, @"\." + change.Key + @"\b", "." + change.Value);

它会匹配关键字后跟其他分隔符,而不仅仅是“,”和“;”,但它可能仍适用于您的情况。