繁体   English   中英

正则表达式替换多个模式

[英]regex replace multiple patterns

我是编程新手,需要一些帮助;-)如何替换string 多个模式

例:

static void Main(string[] args)
{
  string input = "this is a test AAA one more test adakljd jaklsdj BBB sakldjasdkj CCC";
  string [] pattern = {"AAA", "BBB","CCC"};
  string replacement = "XXX";

  string result = null;
  for (int i = 0; i < pattern.Length; i++)
  {
    result = Regex.Replace(input, pattern[i], replacement);
  }

  Console.WriteLine(result);
}

想要结果:

这是一个测试XXX一个测试adakljd jaklsdj XXX sakldjasdkj XXX

但我得到:

这是测试AAA的另一个测试adakljd jaklsdj BBB sakldjasdkj XXX

thx提前帮助!

你不需要正则表达式,你只需使用Replace

string input = "this is a test AAA one more test adakljd jaklsdj BBB sakldjasdkj CCC";
string replaced = input.Replace("AAA", "XXX").Replace("BBB", "XXX")...

我建议所有模式的部分( "AAA", ..., "CCC" )与|组合 (“要么”):

  string input = "this is a test AAA one more test adakljd jaklsdj BBB sakldjasdkj CCC";
  string[] pattern = { "AAA", "BBB", "CCC" };
  string replacement = "XXX";

  string result = Regex.Replace(
    input, 
    string.Join("|", pattern.Select(item => $"(?:{item})")), 
    replacement);

  Console.WriteLine(result);

结果:

this is a test XXX one more test adakljd jaklsdj XXX sakldjasdkj XXX 

在模式部分包含|情况下,我将每个模式部分像BBB一样变成一个 (?:BBB) 在其内部

你在整个循环中重复覆盖result变量,似乎也没有任何需要,只需使用input变量

input = Regex.Replace(input, pattern[i], replacement);
...
Console.WriteLine(input);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM