我想在给定的字符串中替换ab
后跟var11
输入:|var11=ab|var12=100|var21=cd|var22=200|
我的代码如下:
string input = "|var11=ab|var12=100|var21=cd|var22=200|";
string pattern = @"^.var11=([a-z]+).";
string value = Regex.Replace(input, pattern, "ep");
我得到的输出是:
epvar12 = 100 | var21 = cd | var22 = 200 |
但预期输出为:
| var11 = ep | var12 = 100 | var21 = cd | var22 = 200 |
最佳答案
您可以使用
string input = "|var11=ab|var12=100|var21=cd|var22=200|";
string pattern = @"(?<=\bvar11=)[^|]+";
string value = Regex.Replace(input, pattern, "ep");
或者,采用捕获组方法:
string pattern = @"\b(var11=)[^|]+";
string value = Regex.Replace(input, pattern, "${1}ep");
请参见.NET regex demo
细节
(?<=\bvar11=)
-紧跟整个单词var11=
的位置[^|]+
-1+个非管道字符。如果只想在
var11
之前或在字符串开头使用时更新|
值string pattern = @"(?<=(?:^|\|)var11=)[^|]+";
其中
(?:^|\|)
匹配字符串(^
)或(|
)管道字符(\|
)的开头。