0

我的 SLRE 库有问题,我不知道如何在比赛结束后停止抓取所有内容。假设我有一个 html 输出,并且在缓冲区中间的某个地方有我要解析的行

name="id" value="1a2b3c4d5e6f" />

这是我的正则表达式

slre_compile(&test, "name=\"id\" value=\"(.*?)\" />")

我在其他线程中阅读过有关贪婪和非贪婪标志的信息,人们曾经遇到过与我类似的问题,但在我的情况下添加到表达式不会改变任何东西。SLRE 返回我的匹配开始1a2b3c4d5e6f" />并显示以标签结尾的 html 页面的其余部分</html>,只是我不知道为什么。它正在切断 html 源代码的开头,但在我的表达之后留下了所有内容。我也尝试过遵循正则表达式

slre_compile(&test, "^.*?name=\"id\" value=\"(.*?)\" />.*?$")

和其他一些,用贪婪和非贪婪标志修改,这给了我相同的结果。有谁知道为什么 SLRE 不能停止" />并继续捕获字符直到源字符串结束?

4

1 回答 1

0

似乎 SLRE 不理解非贪婪限定符,.*?而是将其解析为(?:.*)?. 但是,在这种情况下\"[^\"]*\"应该工作......

于 2013-08-03T16:58:08.263 回答