2012-06-14 18 views
2

我有很多老的phpBB的数据,包含与文本像帖子数据库:TSQL正则表达式的功能需要操作的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="Mark"]quoted text by Mark[/quote:522f1e2c15] 

我们需要这些数据迁移到新系统,但作为我们需要更换不同的标签中出现的唯一ID的过程的一部分,所以上面的会变成:

[b]bold[/b] 
[i]italic[/i] 
[u]underline[/u] 
[img]http://www.mysite.com/myimage.jpg[/img] 
[quote=Mark]quoted text by Mark[/quote] 

我希望一些SQL正则表达式大师可以显示如何做到这一点?

+0

TSQL没有正则表达式。你能够使用CLR程序集吗? –

+0

我还没有任何CLR程序集的经验,所以我不知道那是什么。如果有帮助,我们将数据从MySql数据库迁移到SQL Server 2008数据库? – marcusstarnes

+0

[这里有一个示例汇编和使用代码](http://www.simple-talk.com/sql/t-sql-programming/clr-assembly-regex-functions-for-sql-server-by-example /) –

回答

2

只是一个可能的解决方案。使用Regex来匹配组,然后排除唯一的ID组。

string pattern = @"(\[b)(:\w+)(\]\w+\[\/b)(:\w+)(\])"; 
string input = "[b:522f1e2c15]bold[/b:522f1e2c15]"; 
Match m = Regex.Match(input,pattern); 
Console.WriteLine("{0}{1}{2}", m.Groups[1].Value, m.Groups[3].Value, m.Groups[5].Value);