2016-04-27 8 views
0

私はリバースプロキシ経由のHTML応答のheadタグの下にネストされたすべての第1レベルのタグを取得しようとしています。私はnginx + luaを実行しているので、luaパターンマッチングの点での解決策は素晴らしいでしょう...Luaのマッチングの第1レベルのタグの内部<head>

今、私はheadタグの内部をストリングし、ネストされたタグを繰り返して追加します

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

次に、「タグ」テーブルを繰り返して、すべての非第1レベルのタグを削除します。私は、タグ内の引数や内容、タグ自体には興味がありません。 私たちはライブリクエストについて話しています。リクエストの頭が十分に大きければ、これは遅くなるかもしれないと心配しています。

だから私はいくつかの関連質問がある:

  • は十分に効率的string.gmatchですか?
  • これをより効率的に行う方法/モジュールはありますか?
  • 私自身のモジュールの作成を検討すべきでしょうか?

+0

あなたにはどのような問題があるかわかりません。コードがうまくいけば、あなたはむしろ[codereview.se] –

+0

に投稿したいと思います。後でそれを書き直すことを回避しようとしている、将来を計画している、話すこと。あなたの提案を試してみましょう! –

+0

ちょうどFYI:あなたのコードが実際に動作していることが確かであれば、コードレビューで投稿してください。わからない場合は、問題の解決に役立つ[MVCE(最小完全検証可能な例)](http://stackoverflow.com/help/mcve)を投稿してください。 –

答えて

0

string.gmatchは十分に効率的ですか?

あなたのユースケースに一致するテストを実行することで、この質問に自分自身で答えることができます。一般的な答えがあなたに役立つことはまずありません。

これをより効率的に行う方法やモジュールはありますか?

多分、これはやはりあなたがしようとしていることに依存します。特定のタグを探している場合は、すべてのタグを解析して格納する代わりに、特定のタグを検索してチェックする方が速いでしょう。早期の試合で条件が満たされた場合は、早めに中止することもできます。

関連する問題