我有一个简单的正则表达式:
\[quote\](.*?)\[\/quote\]
将用table,tr和td替换[quote]。 (和[/ quote] / td,/ tr和/ table)
它适用于同一字符串中的多个单独引号:
IE:
[quote]
Person 1
[/quote]
Person 3 talking about a quote
[quote]
Person 2
[/quote]
Person 3 talking about another quote.
但是当它试图在同一个字符串中替换多个(非单独的)引用时:
IE:
[quote]
[quote]
Person 1
[/quote]
Person 2 quoting person 1
[/quote]
Person 3 quoting person 2 and 1
它搞砸了,(将第一个报价与第一个/引用匹配,当它应该匹配第二个报价到第一个/引用和第一个报价到最后一个/引用时)
我如何编辑正则表达式以便在两个示例中都有效?
非常感谢,
詹姆斯
答案 0 :(得分:2)
正则表达式不是解析嵌套结构化文本的好选择。有关JavaScript BBCode解析器的信息,请参阅this question
答案 1 :(得分:0)
试试这个:
\[quote\]{1,}(.*?)\[\/quote\]
答案 2 :(得分:0)
我创建了一个处理这种情况的JavaScript BBCode解析器示例。我认为我解决了这种情况,因为JavaScript的字符串替换函数可以接受另一个函数,所以你可以使你的解析器递归地处理输入的较小部分。但是,我看了它已经有一段时间了。你可以在这里看到它并在同一页面上下载(下载链接在标题下 - “你可以在这里下载JavaScript模块。”):