C# 用正则表达式替换字符串

C# 用正则表达式替换字符串,c#,regex,text,C#,Regex,Text,假设我有一个文本,比如“Hello@c1,请在这里玩@c12,@c1去玩”,我想写一个模式,用一些值替换所有的@c1,但同时正则表达式不能改变@c12或@c123等。。 它应该只替换匹配的字符串。我已经尝试了几个小时,但未能产生正确的输出,所以任何人都可以通过文章或代码示例来帮助我做些什么 我正在使用.Net Framework编写正则表达式您可以使用lookahead和lookahead (?<=\W|^)@c1(?=\W|$) (?您可以使用前向和后向 (?<=\W|^)@c1

假设我有一个文本,比如“Hello@c1,请在这里玩@c12,@c1去玩”,我想写一个模式,用一些值替换所有的@c1,但同时正则表达式不能改变@c12或@c123等。。 它应该只替换匹配的字符串。我已经尝试了几个小时,但未能产生正确的输出,所以任何人都可以通过文章或代码示例来帮助我做些什么


我正在使用.Net Framework编写正则表达式

您可以使用lookahead和lookahead

(?<=\W|^)@c1(?=\W|$)

(?您可以使用前向和后向

(?<=\W|^)@c1(?=\W|$)
(?
您可以使用负前瞻来实现这一点


您可以使用负前瞻执行此操作

您可以使用此正则表达式:

@c1\b


想法是在文本后使用单词边界,这将解决您的问题

您可以使用以下正则表达式:

@c1\b


我们的想法是在文本后使用单词边界,这将解决您的问题

您可以使用单词边界
\b
,也可以在此处使用

单词边界声明一边有单词字符,另一边没有

String s = "Hello @c1, please go play with @c12 and @c123";
String r = Regex.Replace(s, @"@c1\b", "foo");
Console.WriteLine(r); //=> "Hello foo, please go play with @c12 and @c123"
负前瞻断言,在字符串中的该位置,紧跟其后的不是数字

String s = "Hello @c1, please go play with @c12 and @c123";
String r = Regex.Replace(s, @"@c1(?!\d)", "foo");
Console.WriteLine(r); //=> "Hello foo, please go play with @c12 and @c123"

您可以使用单词边界
\b
或此处

单词边界声明一边有单词字符,另一边没有

String s = "Hello @c1, please go play with @c12 and @c123";
String r = Regex.Replace(s, @"@c1\b", "foo");
Console.WriteLine(r); //=> "Hello foo, please go play with @c12 and @c123"
负前瞻断言,在字符串中的该位置,紧跟其后的不是数字

String s = "Hello @c1, please go play with @c12 and @c123";
String r = Regex.Replace(s, @"@c1(?!\d)", "foo");
Console.WriteLine(r); //=> "Hello foo, please go play with @c12 and @c123"
尝试以下模式:

@c(?=1\D)1

尝试以下模式:

@c(?=1\D)1

关于
@c1a
?是否必须更改?关于
@c1a
?是否必须更改?