我正在将我的论坛转换为phpBB,他们使用类似的BBCode标签,但有一个是不同的。要在旧论坛中引用,它的格式如下:
old:[quote = prattw]我的文字在这里。[/ quote]
new:[quote =“prattw”]我的文字在这里。[/ quote]
我需要一个正则表达式,它会在BBCode块中的用户名周围添加引号。非常感谢!
答案 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 - 您只需要查找它。