Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何有条件地替换正则表达式中的捕获组_C#_Regex_Regex Group - Fatal编程技术网

C# 如何有条件地替换正则表达式中的捕获组

C# 如何有条件地替换正则表达式中的捕获组,c#,regex,regex-group,C#,Regex,Regex Group,我有一个字符串,以4个可能的代码结尾,我需要用3个可能的代码替换它。 例如 虽然将后缀代码放入捕获组很容易,但我想知道如何进行替换,如果组==“D”,则替换为“C”,否则替换为捕获组 基本子组替换模式: (?<word>\w{3})\.(?<sub>[A-Z]+) 我使用的是c#,但由于模式和替换字符串都是从数据库读入并替换的(请参见下文),因此我不能仅在代码中执行此操作: Regex.Replace(mystring, pattern, replaceStr); 如

我有一个字符串,以4个可能的代码结尾,我需要用3个可能的代码替换它。 例如

虽然将后缀代码放入捕获组很容易,但我想知道如何进行替换,如果组==“D”,则替换为“C”,否则替换为捕获组

基本子组替换模式:

(?<word>\w{3})\.(?<sub>[A-Z]+)
我使用的是c#,但由于模式和替换字符串都是从数据库读入并替换的(请参见下文),因此我不能仅在代码中执行此操作:

Regex.Replace(mystring, pattern, replaceStr);

如果mystring是abc.A、abc.B等中的一个

如果您只需要替换
abc.D
并保持其他代码的完整性,为什么不使用
(\w{3}\]D\B
并替换为
$1c code
?请解释你在做什么,并添加语言标签。我可以这样做,但由于我的实际案例需要许多正则表达式集,它实际上使我的工作量增加了一倍,因此,我正在寻找一种涵盖所有情况的解决方案。您考虑过使用吗?我需要所有这些都在模式内并替换字符串。您不能这样做。如果您只需要替换
abc.D
,并保持其他代码的完整性,为什么不使用
(\w{3}\)D\b
并替换为
$1c code
?请解释您正在做什么并添加语言标记。我可以这样做,但由于我的实际案例需要许多正则表达式集,因此它实际上使我的工作量增加了一倍,因此我正在寻找一种涵盖所有案例的解决方案。您是否考虑过使用?我需要它全部位于模式内并替换字符串。您不能这样做。
${word} ${sub} code
Regex.Replace(mystring, pattern, replaceStr);