Lua匹配内部的第一级标签

时间:2016-04-27 12:48:45

标签: nginx lua lua-patterns

我试图让所有第一级标签嵌套在任何通过我的反向代理的html响应的head标签下。我正在运行nginx + lua,所以在lua模式匹配方面的解决方案会很棒......

现在我将string.sub()放在head标签的内部,然后迭代嵌套标签,将它们逐个添加到表中:

local headOnly = string.sub(wholeHtmlResponse, startHead, endHead)
local tags = {}
for tag in string.gmatch(headOnly, '(<[^<>]*>)') do
    tags[#tags+1]=tag
end

然后我遍历&#34;标签&#34;表,删除所有非第一级标记。我对标签中的任何参数或内容不感兴趣,只对标签本身感兴趣。 我们正在谈论实时请求,如果请求的头部足够大,我担心这会变得很慢。

所以我有一些相关的问题:

  • string.gmatch足够有效吗?
  • 有没有办法/模块更有效地做到这一点?
  • 我应该考虑编写自己的模块吗?

任何意见都赞赏!

1 个答案:

答案 0 :(得分:0)

  

string.gmatch足够有效吗?

您可以通过运行与您的用例匹配的测试来自己回答此问题。一般性答案不太可能对您有所帮助。

  

是否有方法/模块可以更有效地完成此任务?

也许,但这又取决于你想要做什么。如果您正在寻找特定标签,搜索该特定标签可能会更快,而不是解析和存储所有标签然后检查。如果早期比赛满足您的条件,您也可以提前中止。