正则表达式替换前缀字符串
Regex to replace a prefix string
我想用一个本身后跟一个点的子字符串替换它,当它是一个较长序列的开始时(即它是一个前缀)。例如给定字符串:
"'abc' 'xyzabcdef' 'abcdef'"
我想将前缀abc
转换成abc.
,得到:
"'abc' 'xyzabcdef' 'abc.def'"
请注意 abc
的独立字符串未进行转换。
我试过这个代码:
var input = @"'abc' 'xyzabcdef' 'abcdef'";
var result = Regex.Replace(input, @"\b(abc)\w+", @".");
Console.WriteLine(result);
给出:
'abc' 'xyzabcdef' 'abc.'
请注意,在第三个输出中,结尾的 def
也被替换了。我预计 </code> 的替换只会与组 <code>(abc)
相关联,但它显然与整个模式匹配。我正在寻找 Regex.Replace()
调用的正确表述。
尝试替换正则表达式模式 (?<=')abc(?=\w)
。此模式表示匹配:
(?<=') assert that single quote precedes
abc match and consume abc
(?=\w) assert that at least one word character follows
var input = @"'abc' 'xyzabcdef' 'abcdef'";
var result = Regex.Replace(input, @"(?<=')abc(?=\w)", @"abc.");
Console.WriteLine(result); // 'abc' 'xyzabcdef' 'abc.def'
我想用一个本身后跟一个点的子字符串替换它,当它是一个较长序列的开始时(即它是一个前缀)。例如给定字符串:
"'abc' 'xyzabcdef' 'abcdef'"
我想将前缀abc
转换成abc.
,得到:
"'abc' 'xyzabcdef' 'abc.def'"
请注意 abc
的独立字符串未进行转换。
我试过这个代码:
var input = @"'abc' 'xyzabcdef' 'abcdef'";
var result = Regex.Replace(input, @"\b(abc)\w+", @".");
Console.WriteLine(result);
给出:
'abc' 'xyzabcdef' 'abc.'
请注意,在第三个输出中,结尾的 def
也被替换了。我预计 </code> 的替换只会与组 <code>(abc)
相关联,但它显然与整个模式匹配。我正在寻找 Regex.Replace()
调用的正确表述。
尝试替换正则表达式模式 (?<=')abc(?=\w)
。此模式表示匹配:
(?<=') assert that single quote precedes
abc match and consume abc
(?=\w) assert that at least one word character follows
var input = @"'abc' 'xyzabcdef' 'abcdef'";
var result = Regex.Replace(input, @"(?<=')abc(?=\w)", @"abc.");
Console.WriteLine(result); // 'abc' 'xyzabcdef' 'abc.def'