我在这里不知所措,尽管我越来越熟悉Lua中的gsub。可能有更好的方法来更有效地做到这一点,这就是我正在寻找的。我想要做的就是改变:
\(port Planes)9e;\(enter pool)n2euw
到
port Planes;run 9e;enter pool;run n2euw
这似乎很简单,但我总是画一个空白。我可能将这部分归因于疲惫,但这并不是一个真正的借口。我的方式是:
string.gsub(variable, ";","\(")
string.gsub(variable, "\(", ";")
string.gsub(variable, ")",";run")
string.gsub(variable, ";;",";")
但对我来说,这看起来很草率,而且效率不如我想要的那么高。如果“)”结束该行,它也会产生问题,并且它会“那里,这不是我想要的东西。我很感激熟悉Lua的人的专业知识,他可以整理一下并提高效率。一旦完成所有内容,我将把它放入一个函数中。谢谢!
编辑:经过测试,它甚至无法工作......无论如何......我无法找出合适的模式匹配序列来使其完全正常工作......
答案 0 :(得分:2)
在不了解您可能拥有的可能组合的情况下,我不能说这会在每个实例中起作用,但它应该开始:
string.gsub(variable,"\\%((.-)%)","%1;run ")
string.gsub(variable,";run $","")
第一个gsub返回括号内的命令,删除括号并在末尾添加'; run'。
第二个是检查字符串的结尾是否为“;运行”,如果是这样则替换它。
您还应该查看这篇文章,以获得有关模式的精彩摘要: http://www.lua.org/pil/20.2.html