用于操纵文本的C#正则表达式

用于操纵文本的C#正则表达式,c#,.net,regex,C#,.net,Regex,我有一个包含大量旧phpBB数据的数据库,其中包含带有以下文本的帖子: [b:522f1e2c15]bold[/b:522f1e2c15] [i:522f1e2c15]italic[/i:522f1e2c15] [u:522f1e2c15]underline[/u:522f1e2c15] [img:522f1e2c15]http://www.mysite.com/myimage.jpg[/img:522f1e2c15] [quote:522f1e2c15="Mr Smith"]quoted te

我有一个包含大量旧phpBB数据的数据库,其中包含带有以下文本的帖子:

[b:522f1e2c15]bold[/b:522f1e2c15]
[i:522f1e2c15]italic[/i:522f1e2c15]
[u:522f1e2c15]underline[/u:522f1e2c15]
[img:522f1e2c15]http://www.mysite.com/myimage.jpg[/img:522f1e2c15]
[quote:522f1e2c15="Mr Smith"]quoted text by Mr Smith[/quote:522f1e2c15]
[quote="Mr Smith"]quoted text by Mr Smith[/quote]
我正在将这些数据迁移到一个新的系统中,当我开始渲染这些标记时,需要对它们进行操作,因此它们变成:

<b>bold</b>
<i>italic</i>
<u>underline</u>
<img src="http://www.mysite.com/myimage.jpg" />
<div><h4>Posted by Mr Smith</h4>quoted text by Mr Smith
<div><h4>Posted by Mr Smith</h4>quoted text by Mr Smith
然而,我也需要考虑到同一帖子中不同标签的id,即

This is [b:123f1e2c15]bold[/b:123f1e2c15] and this is [i:522f1e2c15]italic[/i:522f1e2c15].
我还需要能够处理这些标记的嵌套实例,例如,粗体标记文本和一些斜体标记文本,即

This is [b:522f1e2c15]bold and [i:522f1e2c15]this is bold italic[/i:522f1e2c15][/b:522f1e2c15].
我最初在这里发布了一个,专门用于处理上面的“quote”实例,这个实例的答案似乎是a,但经过进一步测试,我注意到,如果一个标记中包含的id用于同一帖子中的另一个标记(即我上面发布的示例),那么它就会中断


因此,本质上我需要一个正则表达式解决方案来处理上述所有问题。

嵌套标记位在Regex中是很难做到的,但是.NET Regex引擎提供了处理它们和ID匹配所需的所有工具。您可以应用带有平衡组的正则表达式来解决该任务


也就是说,对于这类数据,我更愿意实现一个真正的解析器,例如使用一个工具集,如GOLD parser System或ANTLR。

如果您知道BB代码格式良好,那么就不需要解析它,只需替换标记(不解析结构)。嘿,整洁。也许我太悲观了。
This is [b:522f1e2c15]bold and [i:522f1e2c15]this is bold italic[/i:522f1e2c15][/b:522f1e2c15].