我想在给定的字符串中替换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=)[^|]+";


其中(?:^|\|)匹配字符串(^)或(|)管道字符(\|)的开头。

10-04 17:42