Lua では、次のパターンを使用して、大きな XML 文字列から最後に出現した XML タグを解析しています。
local firstPattern = "<tag>(.-)</tag>"
次に、次のコードを使用してすべての出現箇所を見つけました。
local lastMatch
for match in string.gmatch(xmlString, firstPattern) do
lastMatch = match
end
あまり速くないように見えたので、貪欲な文字をパターンの先頭に追加してみました。
local secondPattern = ".*<tag>(.-)</tag>"
lastMatch = string.match(xmlString, secondPattern)
解析の前後に印刷os.clock()
すると、2 番目のパターンの方がわずかに高速であることがわかりましたが、最後に出現した xml タグに一致するより良いパターンがあると考えなければなりません。
3 番目のパターンも試しましたが、xml タグの最初のインスタンスしか返されません。
local thirdPattern = "<tag>(.-)</tag>.-$"
local firstMatch = string.match(xmlString, thirdPattern)