正则表达式 - 仅查找和替换完整的字符串出现(不是部分匹配)

vit*_*ore 2 .net c# regex replace

我不是很擅长正则表达式,但也许有一种简单的方法来完成这项任务.

我给了一个字符串 "bla @a bla @a1 bla"

我也给对像{"a", "a2"},{"a1", "a13"}和我需要更换@a@a2为第一对,并@a1@a13第二之一.

问题是当我使用String.Replace和寻找时@a,它也会替换,@a1但不应该.我需要它完全匹配@a并避免在其他地方部分匹配它.

注意:给定的字符串也可以是括号,逗号,点等.但是,对将永远是[a-z]*[0-9]+

请帮助我替换正则表达式.

干杯

cle*_*tus 5

用途\b:

@a\b
Run Code Online (Sandbox Code Playgroud)

\b是零宽度字边界.基本上,这是什么意思是它相匹配的过渡,从单词字符(字母,数字,下划线),以非单词字符(一切),反之亦然,但不会"消耗"输入的任何部分(这是零宽度部).

例如:

string s1 = "bla @a bla @a1 bla ";
string s2 = Regex.Replace(s1, @"@a\b", "foo");
Console.WriteLine(s2);
Run Code Online (Sandbox Code Playgroud)

输出:

bla foo bla @a1 bla
Run Code Online (Sandbox Code Playgroud)

  • @vittore,是的.但是你为什么不亲自测试呢? (3认同)