SLRE正则表达式无法正常工作

时间:2013-08-03 15:04:51

标签: c++ regex

我的SLRE库有问题,我无法弄清楚如何在匹配后停止抓取所有内容。假设我有一个html输出,并且在缓冲区中间某处有我要解析的行

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

这是我的正则表达式

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

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

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

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

1 个答案:

答案 0 :(得分:0)

似乎SLRE不理解非贪婪的限定符并解析.*?而不是(?:.*)?。但是,在这种情况下,\"[^\"]*\"应该有效......