我正在将我的论坛转换为phpBB,他们使用类似的BBCode标记,但一个是不同的。要在老论坛报价,它是格式,如:BBCode标记需要RegEx表达
老:[报价= prattw]我的文字在这里了[/ quote]
新:[报价= “prattw”]我的文字在这里[/报价]
我需要一个正则表达式,它将在BBCode块的用户名周围添加引号。非常感谢!
我正在将我的论坛转换为phpBB,他们使用类似的BBCode标记,但一个是不同的。要在老论坛报价,它是格式,如:BBCode标记需要RegEx表达
老:[报价= prattw]我的文字在这里了[/ quote]
新:[报价= “prattw”]我的文字在这里[/报价]
我需要一个正则表达式,它将在BBCode块的用户名周围添加引号。非常感谢!
假设为用户名的唯一有效的字符是那些由\w
匹配,即[a-zA-Z0-9_]
(在Python),然后就可以通过更换\[quote="\1"\]
\[quote=(\w+)\]
。
注意事项:
,如果你的用户名被允许包含[]
这可能严重错误。
\[quote=(.+?)\]
非贪婪的任何字符匹配,但对于[quote=Clan[FROZEN] Supahkillah]
这将给比赛Clan[Froze
。\[quote=(.+)\]
会匹配太多的[quote=Alice][quote=Bob]
。请记住,regexps aren't good at handling nested structures。您可能想要使用解析方法而不是正则表达式方法。 (对于HTML,这将是“使用XML解析器” - 在本例中它将是“使用bbCode解析器”。)
至少在Python中,\w
的含义是依赖于语言环境的。所以对于俄罗斯人来说,\w
也会匹配Главное в новостях
之类的东西。
我仍然认为你试图重新发明轮子。有可能存在一个脚本来自动将旧的论坛格式转换为phpBB - 您只需要查找它。
非常感谢!用户名都是正常的字母数字英文名称,所以这应该很好。 – prattw 2012-03-16 02:11:30
作为一个完整性检查,您可能想要将所有用户名转储到一个文本文件('SELECT username FROM users'?),并检查** only **字符是否为'[a-zA-Z0-9_]' 。空格和破折号是常见的(即我的用户名在这里)。 – 2012-03-16 02:13:51
第二个想法是,使用否定字符类'[^ \ [\]]',而不是'\ w'而不是'\ w',它可以匹配任何东西但是''''和''''。那么使用贪婪的比赛应该是安全的。 – 2012-03-16 02:14:38
我认为你正在重新发明轮子。有没有一个工具来自动将论坛迁移到phpBB? – 2012-03-16 01:53:27
我一直无法找到从WebWiz 9.x到phpBB的转换器。我能找到的最好的方法是将WebWiz 5或6转换为phpBB 2.花了一个多星期的时间试图让它工作后,我发现转换器是垃圾。即使它确实有效,我仍然需要再次升级才能达到3.对于论坛的大小,它将花费一周时间才能完全转换。我不能有那种停机时间。我的手版本是90%完成现在只是微调。 – prattw 2012-03-16 01:58:36