正则表达式共用同一字符

yun166 2010-06-30 02:19:34
处理字符:[t1]<f1><f2><f3><f4>
结果产生4行:
[t1]<f1>
[t1]<f2>
[t1]<f3>
[t1]<f4>

如上,能通过一条正则表达式实现吗?可以的话不用委托来写
谢谢!
...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
poloyzhang 2010-07-02
  • 打赏
  • 举报
回复
学习一下
-过客- 2010-06-30
  • 打赏
  • 举报
回复
刚看到站内信

如查<...>数量固定的话,可以不用委托,如果数量不固定,那还是得用委托来处理,方式如无牙的,当然也可以写成Replace的
string test = "[t1]<f1><f2><f3><f4>";
Regex reg = new Regex(@"(\[[^\[\]]*\])(<[^<>]*>)+");
string result = reg.Replace(test, delegate(Match m)
{
StringBuilder sbuilder = new StringBuilder();
foreach (Capture c in m.Groups[2].Captures)
{
sbuilder.Append(m.Groups[1].Value);
sbuilder.Append(c.Value);
sbuilder.Append("\n");
}
return sbuilder.ToString();
});
richTextBox2.Text = result;
兔子-顾问 2010-06-30
  • 打赏
  • 举报
回复

private static void TestRegex09()
{
string yourStr = @"[t1]<f1><f2><f3><f4>";
Match m = Regex.Match(yourStr, @"(\[[^\[\]]+\])(<[^<>]+>)+");
if (!m.Success) return;
StringBuilder builder = new StringBuilder();
foreach (Capture c in m.Groups[2].Captures)
{
builder.AppendLine(m.Groups[1].Value + c.Value);
}
Console.WriteLine(builder.ToString());
}
cancerser 2010-06-30
  • 打赏
  • 举报
回复
正则式用来匹配字符串的,处理得自己写
分割开 自己组合下就得了

我是来帮顶的

110,536

社区成员

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

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

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