我的SLRE库有问题,我无法弄清楚如何在匹配后停止抓取所有内容。假设我有一个html输出,并且在缓冲区中间某处有我要解析的行
name="id" value="1a2b3c4d5e6f" />
这是我的正则表达式
slre_compile(&test, "name=\"id\" value=\"(.*?)\" />")
我已经读过其他线程中的贪婪和非贪婪标志,其中人们曾经和我有类似的问题,但在我的情况下,将?添加到表达式不会改变任何东西。
SLRE从1a2b3c4d5e6f" />
开始返回匹配,并显示以</html>
标记结尾的html页面的其余部分,我不知道为什么。它正在削减html源代码的开头但是在我的表达之后留下了所有内容。我也试过跟随正则表达式
slre_compile(&test, "^.*?name=\"id\" value=\"(.*?)\" />.*?$")
和其他一些,用贪婪和非狡猾的旗帜修改,这给了我相同的结果。有谁知道为什么SLRE无法在" />
停止并继续捕获字符直到源字符串结束?
答案 0 :(得分:0)
似乎SLRE不理解非贪婪的限定符并解析.*?
而不是(?:.*)?
。但是,在这种情况下,\"[^\"]*\"
应该有效......