列表和td标记的正则表达式模式

时间:2013-09-06 10:59:07

标签: regex asp-classic

我使用的脚本应该读取<li>标记中的内容,请注意li tag没有任何结束标记

<tr class="colors_background_main"> 
          <td colspan="2"> <li>Tools Color:blue
</td>
        </tr>

我尝试的是使用以下常规表现,但它没有显示任何结果

<li>\S*(.*)?</td>

阅读内容的经典ASP代码

Set objRegExp = New RegExp

strPattern = "(?s)<li>\S*(.*?)</td>"


'<td[^>]*><p>.+?<\/p><\/td>"

objRegExp.Pattern = strPattern
objRegExp.IgnoreCase = True
objRegExp.Global = True

Set colMatches = objRegExp.Execute(strContents)

If colMatches.Count > 0 Then
    strTitle = colMatches(0).Value
Else
    strTitle = ""
End If

Set objRegExp = Nothing

Response.write(strTitle)

1 个答案:

答案 0 :(得分:4)

除非您使用DOTALL模式,否则

.与换行符不匹配。

请尝试以下操作:

(?s)<li>\S*(.*?)</td>

除非您的正则表达式endigne支持DOTALL模式,否则这不起作用。在这种情况下,请使用以下正则表达式:

<li>\S*([\s\S]*?)</td>

注意

原始正则表达式将在最后完成。您应该写(.*?)这是不合适的,而您(.*)?表示可选。 (谢谢@DioF)