我要在给定字符串中替换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");
详细信息
(?<=\bvar11=)
-紧接整个单词var11=
]的位置>[^|]+
-1+非管道字符。如果仅在var11
之前或字符串使用开始时才想更新|
值,则>
string pattern = @"(?<=(?:^|\|)var11=)[^|]+";
其中
(?:^|\|)
匹配字符串(^
)或(|
)管道字符(\|
)的开头。