可以试试用antlr或gold之类的Parser来分析。
匹配一个HTML标签的开始标签和结束标签,以及标签中间的文本。比如This is a test,我们要匹配和以及中间的文字。我们可以用如下正则表达式:“<([A-Z][A-Z0-9]*)[^>]*>.*?”
首先,“<”将会匹配“”的第一个字符“<”。然后[A-Z]匹配B,[A-Z0-9]*将会匹配0到多次字母数字,后面紧接着0到多个非“>”的字符。最后正则表达式的“>”将会匹配“”的“>”。接下来正则引擎将对结束标签之前的字符进行惰性匹配,直到遇到一个“”符号。然后正则表达式中的“\1”表示对前面匹配的组“([A-Z][A-Z0-9]*)”进行引用,在本例中,被引用的是标签名“B”。所以需要被匹配的结尾标签为“”
以上是否可以提供你思路
最后
<(.*)>.*<\/\1> 可以匹配一个 HTML 标记
不好办,比如下面这个:
<div>1<div>2</div>3
你怎么确定是1前面还是2前面哪个是未关闭的?
用VS2008也很容易看出来,,