正则表达式匹配嵌套TAGS

时间:2010-12-08 01:04:46

标签: regex vbscript nested

您好我正在尝试匹配多嵌套引号的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,但事实证明使用正则表达式更加困难

2 个答案:

答案 0 :(得分:3)

我只是重复说here

正则表达式无法匹配上下文无关语言,例如标签组。您无法将开始标记与结束标记匹配,因此解析块(尤其是嵌套标记)将无法可靠

你当然可以建立一个帮助的淤泥,但是有些情况会无法发挥作用。

答案 1 :(得分:0)

嗯,这就是解析器所需要做的一切。

这是伪代码。我不知道你的解析器,所以这是我能提供的最好的。

首先找到带有quoteheader类的div标签。得到下一个兄弟。

这是blockquote标签。我们将此标记称为引号。

获得theQuote的第一个孩子。它将是一个HTML文本项。这是外部引​​用。

获得theQuote的第三个孩子。它将是另一个blockquote标签。我们将此标记称为内部。

获取theInner的第一个孩子。它将是一个HTML文本项。这是内心的引用。