BBCode Tag需要RegEx表达式

时间:2012-03-16 01:50:27

标签: regex phpbb bbcode

我正在将我的论坛转换为phpBB,他们使用类似的BBCode标签,但有一个是不同的。要在旧论坛中引用,它的格式如下:

old:[quote = prattw]我的文字在这里。[/ quote]

new:[quote =“prattw”]我的文字在这里。[/ quote]

我需要一个正则表达式,它会在BBCode块中的用户名周围添加引号。非常感谢!

1 个答案:

答案 0 :(得分:0)

假设用户名的唯一有效字符是\w匹配的字符,即[a-zA-Z0-9_](在Python中),那么您可以将\[quote=(\w+)\]替换为\[quote="\1"\]

注意事项:

  • 如果允许您的用户名包含[],则可能会出现严重错误。

    • 你可能想尝试像\[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 - 您只需要查找它。