查找与Lua中的模式匹配的第一个字符串(XML模式匹配)

时间:2011-02-17 09:32:11

标签: xml string lua lua-patterns

我目前正在使用以下代码来解析Xml文件的一部分(我首先将整个文件读成一个字符串)。

for xmlMatch in xmlString:gmatch("<MyXmlElement.*</MyXmlElement>") do
    -- Do something.
end

我遇到的问题是for循环只执行一次,因为gmatch函数只返回一个字符串,该字符串从MyXmlElement的第一个实例开始,并在MyXmlElement的最后一个实例的闭包处结束。我怎样才能解析字符串,以便只要找到字符串"</MyXmlElement>" <(而不是最后一种情况),就匹配模式?

1 个答案:

答案 0 :(得分:8)

这里有三件事:

  • gmatch从字符串返回捕获的子字符串,因此您需要在循环中使用()您想要使用的东西
  • 用于匹配尽可能少的字符数,您应该使用.-作为模式直到第一个</MyXmlElement>
  • 你需要在for之后的变量(但我猜这只是一个错字)

所有在一起:

for att,cont in XmlString:gmatch'<MyXmlElement%s*(.-)>(.-)</MyXmlElement>' do
    -- something
end

应该这样做。