您好我正在尝试匹配多嵌套引号的blockquotes并将它们转换回BBCode 就目前的正则表达式而言,这就是我所得到的 将其转换回html实体,以便在stackedoverflow上看到
< div class =“quoteheader”>< div class =“topslice_quote”>([\ s \ S] *?)< / div>< / div>< blockquote>([\ s \ S] *?)(?:< / blockquote>< div class =“quotefooter”>< div class =“botslice_quote”>< / div>< / div>){2,} )
我正在尝试匹配此
< div class =“quoteheader”>< div class =“topslice_quote”>引用< / div>< / div>< blockquote>外部引用是这个 < div class =“quoteheader”>< div class =“topslice_quote”>引用< / div>< / div>< blockquote>内部引用是< / blockquote>< div class =“quotefooter” >< div class =“botslice_quote”>< / div>< / div> < / blockquote>< div class =“quotefooter”>< div class =“botslice_quote”>< / div>< / div>
生成此
[quote]外面引用的是 这个[引用]内部引用是 这[/报价] [/报价]
我正在使用VBScript 5.5 Regeular Expressions。 (但这并不重要)
我真的需要表达方面的帮助。我已经厌倦了使用HTML Parser,但事实证明使用正则表达式更加困难
答案 0 :(得分:3)
我只是重复说here。
正则表达式无法匹配上下文无关语言,例如标签组。您无法将开始标记与结束标记匹配,因此解析块(尤其是嵌套标记)将无法可靠。
你当然可以建立一个帮助的淤泥,但是有些情况会无法发挥作用。
答案 1 :(得分:0)
嗯,这就是解析器所需要做的一切。
这是伪代码。我不知道你的解析器,所以这是我能提供的最好的。
首先找到带有quoteheader类的div标签。得到下一个兄弟。
这是blockquote标签。我们将此标记称为引号。
获得theQuote的第一个孩子。它将是一个HTML文本项。这是外部引用。
获得theQuote的第三个孩子。它将是另一个blockquote标签。我们将此标记称为内部。
获取theInner的第一个孩子。它将是一个HTML文本项。这是内心的引用。