[英]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.