【发布时间】:2014-06-06 23:02:04
【问题描述】:
由于我是 Regex 的新手,因此不确定我是否正确地表达了这个问题。我有一个正则表达式,用于我正在为崇高的 BBCode 处理的语法。以这种方式使用时,此正则表达式匹配良好:
(\[color=red?(.*?)\])(.*?)(\[/color\])
[color=red]红色文字[/color]
这对于匹配/分组代码非常有用。但是我将如何在比赛中捕捉不同的和额外的标签呢?例如,如果 bbcode 将显示:
[center][size=6][color=red][b]红色文字[/b][/color][/size][/center] 或
[center][size=6][color=red][i]红色文字[/i][/color][/size][/center]
该正则表达式将捕获第 3 组中的 [b] 和 [i] 标签。如果使用 [u][b][i],我将如何将 [b]/[i] 标签拆分到另一个组并包含对 [u][b][i] 的“变化”捕获?顺序也不一致。不知道如何做到这一点。
【问题讨论】:
-
有一个网站rubular.com,您可以在其中轻松测试您的正则表达式。我远不是一个正则表达式大师,所以我从找到它就一直在使用它。
-
看起来你真正需要的是一个解析器,因为你正在尝试处理嵌套
-
你的意思是:regexr.com/38v9v
-
我最终使用单独的 RegEx 来识别 BBCode 中的某些场景。例如(regexr.com/38va5)和(regexr.com/38vab)。
标签: regex sublimetext2 bbcode