gpt4 book ai didi

regex - 使用 Lua 遍历 XML 节点

转载 作者:行者123 更新时间:2023-12-02 02:39:20 25 4
gpt4 key购买 nike

我正在尝试遍历所有“FindMe”节点,但我在模式匹配方面遇到了困难。这将用作另一个软件的插件,因此我尽量避免使用解析库。

给定以下 xml

<?xml version="1.0" encoding="utf-8"?>
<NodeA>
<NodeB>
<FindMe attr="1">
<NodeC attr="1" />
</FindMe>
<FindMe attr="2">
<NodeC attr="2" />
</FindMe>
</NodeB>
</NodeA>

当我尝试这个时,它只打印最后一场比赛

for k, _ in src:gmatch(".+(<FindMe .+</FindMe>).+") do
print(k)
end
<FindMe attr="2">
<NodeC attr="2" />
</FindMe>

当我尝试这个时,它会打印所有匹配的节点作为一个结果

for k, _ in src:gmatch('<FindMe.+>.+</FindMe>') do 
print(k)
end
<FindMe attr="1">
<NodeC attr="1" />
</FindMe>
<FindMe attr="2">
<NodeC attr="2" />
</FindMe>

最佳答案

使用 .-而不是 .+ , 这样 gmatch('<FindMe.+>.+</FindMe>')变成 gmatch('<FindMe.->.-</FindMe>') .使用 -意味着非贪婪搜索,因此它在匹配之前获得尽可能少的字符数(而不是在与贪婪搜索匹配之前获得尽可能多的字符数)。您也可以使用 gmatch('<FindMe[^>]+>.-</FindMe>') ,效果应该是一样的。

关于regex - 使用 Lua 遍历 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60751245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com