Regex-替换数字字符串的一部分
我有以下情况:Regex-替换数字字符串的一部分,regex,Regex,我有以下情况: string source1 "ABC?XYZ"; string source2 "DEF?PQR"; string replacement = "123" string result = Regex.Replace(source1, @"([A-Z]{3,})(\?+)([A-Z]{3,})", "$1" + replacement + "$3"); 当然,问题是替换字符串扩展为“S1123$3”,这会在解析器试图查找$1123时混淆解析器 有人能告诉我如何从替换字符串中分隔
string source1 "ABC?XYZ";
string source2 "DEF?PQR";
string replacement = "123"
string result = Regex.Replace(source1, @"([A-Z]{3,})(\?+)([A-Z]{3,})", "$1" + replacement + "$3");
当然,问题是替换字符串扩展为“S1123$3”,这会在解析器试图查找$1123时混淆解析器
有人能告诉我如何从替换字符串中分隔元素吗
谢谢。使用
${n}
而不是$n
,即在您的示例中使用${1}
和${3}
:
string result = Regex.Replace(source1, @"([A-Z]{3,})(\?+)([A-Z]{3,})", "${1}" + replacement + "${3}");
问题是,如果将
“$1”+替换+“$3”
”连接起来,则会得到“$1123$3”。正则表达式解析器将尝试替换1123捕获组,因此它不会做任何事情
如果PHP的约定在您编写的语言中是有效的(请参阅),那么您可以通过将$n
替换引用更改为${n}
来实现您想要的,如下所示:
string result =
Regex.Replace( source1, @"([A-Z]{3,})(\?+)([A-Z]{3,})",
"${1}" + replacement + "${3}");