我目前正在使用以下代码来解析 Xml 文件的一部分(我首先将整个文件读入一个字符串)。
for xmlMatch in xmlString:gmatch("<MyXmlElement.*</MyXmlElement>") do
-- Do something.
end
我遇到的问题是 for 循环只执行一次,因为 gmatch 函数只返回一个字符串,它从 MyXmlElement 的第一个实例开始,到 MyXmlElement 的最后一个实例结束时结束。我如何解析字符串以便在字符串 "</MyXmlElement>"
时匹配模式是否找到了第一个(而不是最后一个)?
最佳答案
这里有3处错误:
- gmatch 从字符串中返回捕获的子字符串,因此您需要使用 () 围绕您要在循环中使用的内容
- 为了匹配尽可能少的字符你应该使用
.-
作为模式,直到第一个可能的</MyXmlElement>
- 并且您需要在 for 之后添加变量(但我想那只是一个错字)
所以一起:
for att,cont in XmlString:gmatch'<MyXmlElement%s*(.-)>(.-)</MyXmlElement>' do
-- something
end
应该可以解决问题。
关于xml - 在 Lua 中查找第一个匹配模式的字符串(XML 模式匹配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5027143/