我想在给定的字符串中替换 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=)[^|]+";
哪里(?:^|\|)
匹配字符串 ( ^
) 或 ( |
) 管道字符 ( \|
) 的开头。
关于c# - 替换字符串中的 ab |var11=ab|var12=100|var21=cd|var22=200|使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58430590/