首页 > 解决方案 > Python SyntaxError:实现 bbcodepy 时语法无效

问题描述

我得到了bbcodepy,我可以修改它,但我不能在我的 main.py 中导入它。我不断收到 SyntaxError 并且我真的不知道代码有什么问题,因为我没有编写它。我只是想稍微修补一下,看看能不能满足我的需求。 是一张指向语法错误方向的图像。但我注意到相同的代码写在同一行,我没有得到 SyntaxError。这是代码:

_URL_RE = re.compile(ur'''\b((?:([\w-]+):(/{1,3})|www[.])(?:(?:(?:[^\s&()]|&amp;|&quot;)*(?:[^!"#$%&'()*+,.:;<=>?@\[\]^`{|}~\s]))|(?:\((?:[^\s&()]|&amp;|&quot;)*\)))+)''')

问题似乎是“ [^\s&()] ”,但只有第二个,而不是第一个。如果您仔细查看代码,您会发现同样的事情出现了两次,但我只在第二次出现时得到了 SyntaxError。请有人启发我。几天来,我一直在尝试为 Python 寻找一个体面的 BBCode 解析器,我相信这是我可以根据自己的需要进行修改的解析器。我似乎无法让bbcode像我想要的那样工作,所以我正在尝试这个。

标签: pythonbbcode

解决方案


好吧,Python 3.4 及更高版本不支持“UR”前缀。

您需要使用 Python 2.7 执行代码,或更改为:

_URL_RE = re.compile(r'''\b((?:([\w-]+):(/{1,3})|www[.])(?:(?:(?:[^\s&()]|&amp;|&quot;)*(?:[^!"#$%&'()*+,.:;<=>?@\[\]^`{|}~\s]))|(?:\((?:[^\s&()]|&amp;|&quot;)*\)))+)''')

另请参阅:python 3.4 版不支持 'ur' 前缀

注意:考虑避免使用三引号字符串,因为如果插入换行符,它会改变正则表达式的含义(除非它是在 VERBOSE 模式下编译的)。


推荐阅读