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

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

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

我的问题是,由于gmatch函数只返回一个字符串,因此for循环仅执行一次,该字符串从第一个MyXmlElement实例开始,直到最后一个MyXmlElement实例的闭合为止。如何解析字符串,以便在第一次找到字符串 "</MyXmlElement>" 时匹配模式(而不仅仅是最后一种情况)?

原文链接 https://stackoverflow.com/questions/5027143

点赞
stackoverflow用户513763
stackoverflow用户513763

这里有3个错误:

  • gmatch函数从字符串中返回捕获的子字符串,所以你需要在想要在循环中使用的地方使用 ()。
  • 为了匹配尽可能少的字符,应该使用 .- 作为模式,只匹配第一个可能的 </MyXmlElement>
  • for循环后需要变量(但我想这只是一个打字错误)。

所以一起:

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

就可以解决问题了。

2011-02-17 10:03:49