我正在尝试构建一个 bbcode 解析器,但是在弄清楚如何避免匹配过于广泛时遇到了很多问题。例如,我想实现一个 [list] 到这样的转换:
\[list\](.*)\[/list\]
将被替换为:
<ul>$1</ul>
这很好用,除非我有两个列表,其中正则表达式与第一个列表的开始标记和第二个列表的结束标记匹配。所以这
[list]list1[/list] [list]list2[/list]
变成这样:
<ul>list1[/list] [list]list2</ul>
这会产生非常丑陋的输出。关于如何解决这个问题的任何想法?