如何用正则表达式截取字符串中需要的内容

hellenismsssss 2012-07-05 01:06:17
问题描述:

string strContent = "昨日凌晨3时,一条@云南:123456 @绿春:112233 刚修好的二级公路试通车不到两个月,整条路飞下悬崖,正宗的豆腐渣工程的微博在网络上疯传,截至昨日下午,该@微博:654321 转载次数达近万次。面对网友的质疑,昨日下午,@绿春:112233 县委宣传部回应,进入雨季以来,@绿春:112233 县境普降大雨,造成该县两条主要公路干道发生山体滑坡,公路中断。"

以上内容,需要用正则表达式,截取其中的内容。即以@符号开头,中间包含:符号,并且:符号之后包含6个数字和1个空格

截取之后的字符串为:

string result = "昨日凌晨3时,一条刚修好的二级公路试通车不到两个月,整条路飞下悬崖,正宗的豆腐渣工程的微博在网络上疯传,截至昨日下午,该转载次数达近万次。面对网友的质疑,昨日下午,县委宣传部回应,进入雨季以来,县境普降大雨,造成该县两条主要公路干道发生山体滑坡,公路中断。"

并且需要得到内容:

string[] strArr包含内容
@云南:123456
@绿春:112233
@微博:654321


请问如何实现?
...全文
10272 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellenismsssss 2012-07-05
  • 打赏
  • 举报
回复
string[] rs = Regex.Split(strContent, @"@\S+\d+");
hellenismsssss 2012-07-05
  • 打赏
  • 举报
回复
即得到:

string[] arr :

[0]昨日凌晨3时,一条
[1]刚修好的二级公路试通车不到两个月,整条路飞下悬崖,正宗的豆腐渣工程的微博在网络上疯传,截至昨日下午,该
[2]转载次数达近万次。面对网友的质疑,昨日下午,
[3]县委宣传部回应,进入雨季以来,
[4]县境普降大雨,造成该县两条主要公路干道发生山体滑坡,公路中断。
hellenismsssss 2012-07-05
  • 打赏
  • 举报
回复
嗯,依照各位的方法得到了 @地名:ID 部分,请问可以得到去掉 @地名:ID 的其他内容吗,最好也是一个string[]
兔子-顾问 2012-07-05
  • 打赏
  • 举报
回复
如果.net 3.0及以上版本,支持Linq
string[] result = Regex.Matches(yourStr,@"@\D+\d+").Cast<Match>().Select(m=>m.Value).ToArray();
兔子-顾问 2012-07-05
  • 打赏
  • 举报
回复
MatchCollection mc = Regex.Matches(yourStr,@"@\D+\d+");
foreach (Match m in mc)
{
MessageBox.Show(m.Value);
}
bdmh 2012-07-05
  • 打赏
  • 举报
回复

string str = @"昨日凌晨3时,一条@云南:123456 @绿春:112233 刚修好的二级公路试通车不到两个月,整条路飞下悬崖,正宗的豆腐渣工程的微博在网络上疯传,截至昨日下午,该@微博:654321 转载次数达近万次。面对网友的质疑,昨日下午,@绿春:112233 县委宣传部回应,进入雨季以来,@绿春:112233 县境普降大雨,造成该县两条主要公路干道发生山体滑坡,公路中断。";
Regex reg = new Regex(@"@\S+:\d{6}");
MatchCollection mc = reg.Matches(str);
foreach (Match m in mc)
{
MessageBox.Show(m.Value);
}

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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