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