【发布时间】:2009-02-20 00:23:44
【问题描述】:
我正在尝试构建一个 bbcode 解析器,但我在弄清楚如何避免匹配过于广泛时遇到了很多问题。例如,我想实现一个 [list] 到这样的转换:
\[list\](.*)\[/list\]
将被替换为:
<ul>$1</ul>
这很好用,除非我有两个列表,其中正则表达式匹配第一个列表的开始标记和第二个列表的结束标记。所以这个
[list]list1[/list] [list]list2[/list]
变成这样:
<ul>list1[/list] [list]list2</ul>
这会产生非常丑陋的输出。关于如何解决这个问题的任何想法?
【问题讨论】:
-
比这个正则表达式伪解析器更好地构建一个真正的解析器。至少当您需要嵌套列表时,您会发现正则表达式并不是所有问题的答案。