[block]
[block]
[/block]
[block]
[block]
[/block]
[/block]
[/block]
BBCode 可以有 0 个或多个参数。例如:
[video: url="url", width="500", height="500"]Title[/video]
BBCodes可能具有多种行为。
例如,[url]text[/url]
将被转换为[url:url="text"]text[/url]
,或者视频bbcode将能够在youtube、dailymotion等之间选择...
我认为这已经满足了我的大部分需求。我已经用正则表达式做了一些工作。但是我的最大问题是匹配参数。事实上,我已经使嵌套的bbcode和没有参数的bbcode正常工作了。但当我添加一个正则表达式来匹配参数时,它不能正确地匹配嵌套的bbcode。
"\[($tag)(=.*)\"\](.*)\[\/\1\]"
// 不是.*而是非贪婪匹配器
我现在没有完整的正则表达式,但我有一些看起来像那样的东西(上面的代码)。
那么有没有一种有效地使用正则表达式或其他方法来匹配bbcode的方法呢?我唯一能想到的就是使用访问者模式,并且根据每个可能的标签拆分我的文本,这样,我可以对我的文本解析有更多的控制,并且我可能会验证我的文档,以便如果输入文本没有有效的bbcode,我可以在保存任何内容之前向用户发出错误提示。
我将使用sablecc创建我的文本解析器。 http://sablecc.org/
有更好的想法吗?或者任何可以导致有效灵活的bbcode解析器的东西?
谢谢,对我的糟糕英语感到抱歉...