正则表达式组字符串替换问题

时间:2012-10-12 02:35:56

标签: c# regex

目标字符串为"A + A_RT + B*A+AA"。我想将A替换为B,将B替换为A。但我不想将A_RT替换为B_RTAA替换为BB。预期结果为"B + A_RT + A*B+AA"。我怎么能在C#中做到这一点?感谢。

目前我使用以下代码,但它会将A_RT替换为B_RT ...

IDictionary<string, string> map = new Dictionary<string, string>()
                                  {
                                      {"A","B"},
                                      {"B","A"},
                                  };

string str = "A + A_RT + B*A+AA";
var regex = new Regex(String.Join("|", map.Keys));
var newStr = regex.Replace(str, m => map[m.Value]);

3 个答案:

答案 0 :(得分:2)

我将正则表达式更改为var regex = new Regex(@"\bA\b|\bB\b"),然后就可以了。

答案 1 :(得分:0)

我不是特别擅长正则表达式模式,所以可能有更好的方法来做到这一点。但模式

@"([a-zA-Z_]+)"

能够将所有变量标记作为匹配结果获取。

答案 2 :(得分:0)

使用var regex = new Regex(String.Format("\\b[{0}]\\b",String.Join("", map.Keys)));