c# - 替换字符串中的 ab |var11=ab|var12=100|var21=cd|var22=200|使用正则表达式

标签 c# regex

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

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

关于c# - 替换字符串中的 ab |var11=ab|var12=100|var21=cd|var22=200|使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58430590/

相关文章:

c# - 如何定义类型 T 必须具有字段 "ID"

c++ - 你如何打印 std::regex?

regex - 更改grep命令的分隔符

java - 正则表达式处理逗号、双引号、引号

c# - Parallel.For 与 Parallel.Invoke

c# - 在迭代 DbDataReader 之前处理 DbCommand 是否可以

c# - code cleanup : should fields, 在类的顶部或底部声明变量和属性?

c# - Linq:执行链查询顺序

regex - RegEx不包含字符串,但包含另一个字符串

regex - 从 URI 正则表达式获取 Tridion 项目 ID