(百分在线)一个正则表达式的问题

edist 2009-09-22 09:10:32


string str="haha,hahaheihei"

string parttern = @"(?<name>@\S*)haha(?:,|\))";

Regex.Replace(str,parttern,"MyName:${name}");

这样结果是
MyName:hahaheheheihei
我希望结果是
MyName:haha,heheheihei

问题:

我希望搜索出字符串里以,或者)结尾的内容,比如这里获取到了"haha",但在做Replace的时候,不对,或者)做replace操作?

谢谢。
...全文
85 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序漫步 2009-09-22
  • 打赏
  • 举报
回复
(?<name>@\S*)haha(?=[,)])
-过客- 2009-09-22
  • 打赏
  • 举报
回复
如果我理解正确,事实上完全可以用个零宽度表达式来替换

string str = "haha,hahaheihei";
Regex reg = new Regex(@"(?i)(?=haha[,)])");
string result = reg.Replace(str, "MyName:");
//输出
MyName:haha,hahaheihei
bjwtufv 2009-09-22
  • 打赏
  • 举报
回复
static void Main()
{
string str = "haha,hahaheihei";
Regex re=new Regex(@"(?<name>.+?(?=,|\)))");
Console.WriteLine(re.Replace(str, "MyName:${name}"));
}
-过客- 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 edist 的回复:]
string str="haha,hahaheihei"
string parttern = @"(? <name>@\S*)haha(?:,|\))";
这样结果是
MyName:hahaheheheihei
我希望结果是
MyName:haha,heheheihei
[/Quote]

楼主的例子和结果完全对应不上
正则中(?<name>@\S*)有@,而你的源字符串中根本就没有,怎么可能有匹配,怎么会替换成功
源字符串中是hahaheihei,怎么到了你给的结果里就成了heheheihei

仔细看下你的例子,给出正确的源字符串和对应的结果
wuyi8808 2009-09-22
  • 打赏
  • 举报
回复
string parttern = @"(?<name>@\S*)haha(?:,|\))"; 
// 改为:
string parttern = @"(?<name>@\S*)haha(?=[,)])";
十八道胡同 2009-09-22
  • 打赏
  • 举报
回复
 static void Main()
{
string str = "haha,hahaheihei";
Regex re=new Regex(@"(?<name>.+?(?=,|\)))");
Console.WriteLine(re.Replace(str, "MyName:${name}"));
}


MyName:haha,hahaheihei
请按任意键继续. . .
十八道胡同 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wxg22526451 的回复:]
LZ给的结果好像不对。
C# codestring str="haha,hahaheihei" ;string parttern=@"(?<name>\S*)haha(?!,|\))";
str=Regex.Replace(str,parttern,"MyName:${name}");
Console.WriteLine(str);
[/Quote]
lz的代码输出是我3楼的结果
十八道胡同 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 edist 的回复:]
string str="haha,hahaheihei"

string parttern = @"(? <name>@\S*)haha(?:,|\))";

Regex.Replace(str,parttern,"MyName:${name}");

这样结果是
MyName:hahaheheheihei
我希望结果是
MyName:haha,heheheihei

问题:

我希望搜索出字符串里以,或者)结尾的内容,比如这里获取到了"haha",但在做Replace的时候,不对,或者)做replace操作?

谢谢。
[/Quote]
static void Main()
{
string str = "haha,hahaheihei,asdasda)";
Regex re=new Regex(@"(?<name>.*?(?=,|\)))");
MatchCollection mc = re.Matches(str);
foreach(Match m in mc)
Console.WriteLine(m.Groups["name"].Value);
}
wxg22526451 2009-09-22
  • 打赏
  • 举报
回复
LZ给的结果好像不对。
string str="haha,hahaheihei" ;
string parttern = @"(?<name>\S*)haha(?!,|\))";
str=Regex.Replace(str,parttern,"MyName:${name}");
Console.WriteLine(str);
十八道胡同 2009-09-22
  • 打赏
  • 举报
回复
static void Main()
{
string str = "haha,hahaheihei";
string parttern = @"(?<name>@\S*)haha(?:,|\))";
Console.WriteLine(Regex.Replace(str, parttern, "MyName:${name}"));
}

输出是:
haha,hahaheihei
请按任意键继续. . .
蓝色风影 2009-09-22
  • 打赏
  • 举报
回复
@"haha(?!,|\))"是什么来的呢?
wxg22526451 2009-09-22
  • 打赏
  • 举报
回复
Regex re = new Regex(@"haha(?!,|\))", RegexOptions.None);
string result = re.Replace("haha,hahaheihei","");
Console.WriteLine(result);

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧