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

标签 xml string lua lua-patterns

我目前正在使用以下代码来解析 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/

相关文章:

xml - 六个不同的更新流是如何工作的?

java - 从 Java Android 代码访问 string.xml 资源文件

scripting - 什么时候用像Lua这样的嵌入式脚本语言好

javascript - 在标准浏览器中运行 Lua 5.3 并保持最大合规性的最简单方法是什么?

java - 在同一个Android Studio页面中显示两个listView

java - 如果在 SAX 中设置 setNamespaceAware(true),如何获取 "xmlns:XXX"属性?

java - 将 XML 文本节点替换为元素节点

java - 关于 Java 中的字符串不变性

android - 如何替换字符串中的平方根符号?

php - 强制本地化 os.date()