0

我正在使用一个应该读取<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)
4

1 回答 1

4

.除非您使用 DOTALL 模式,否则不匹配换行符。

尝试以下操作:

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

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

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

笔记

原始正则表达式将在最后完成。你应该写(.*?)哪个是不贪婪的,而你的(.*)?则是可选的。(谢谢@DioF)

于 2013-09-06T11:02:07.873 回答