Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

regex replace multiple patterns

Tags:

c#

regex

I'm new in programming and need some help ;-) how can I replace multiple patterns in a string?

Example:

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);
}

Want the result:

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

But I get:

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

thx for help in advance!

like image 736
Re Ne Avatar asked Oct 17 '25 18:10

Re Ne


2 Answers

You don't need a regex, you simply can use 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")...
like image 178
omriman12 Avatar answered Oct 19 '25 08:10

omriman12


I suggest combining all patterns' parts ("AAA", ..., "CCC") with | ("or"):

  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);

Outcome:

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

I've turned each pattern part like BBB into a group (?:BBB) in case pattern part contains | within itself

like image 20
Dmitry Bychenko Avatar answered Oct 19 '25 08:10

Dmitry Bychenko