我正在编写一个Elder Scrolls Online插件,该插件由经过轻微修改的名为Havok Script的Lua 5.1引擎支持。这个Lua环境不允许访问os
,io
,package
,debug
模块或任何本机平台绑定,并且没有办法解决此限制,因为ESO是专有软件。
在这种受限的环境中,我需要具有环视功能(负向和正向超前和向后超前)的功能完整的正则表达式引擎。性能几乎无关紧要,但是便利性是头等大事(我没有时间或能力编写自己的正则表达式引擎)。
正则表达式引擎的实际语法比功能集重要。因此,PCRE,JS regex,Java regex或.NET regex引擎(上面的任何一个甚至略有不同)可能都很好。 POSIX太简单了,因为它不支持任何环顾行为。
正则表达式将是未经验证的用户输入,但是环境实际上是沙箱,因此用户无法对其进行任何恶意处理。由于输入是用户输入,因此我不能“仅”使用LPEG之类的东西。用户群绝对会拒绝学习像LPEG这样的全新概念,而不是相对熟悉的regex语法。
在寻找Lua regex引擎时,我用尽了很多选择:
goto
的标签,尽管该标签已明确存在于代码中。我只能认为这是因为生成的代码是如此之大,以至于Lua放弃了寻找它的尝试。 此刻我陷入僵局;我不知道如何继续获得所需的功能。是否有一个库可以为我还没有找到的Lua提供一个纯粹的Lua,功能齐全的正则表达式引擎?我放弃了Google的第七页或第八页。
答案 0 :(得分:1)
根据您的确切要求,您可以尝试使用LPEG的re
module。明显的优势是,基本上在Lua可用的任何地方都可以使用它。另一方面,您必须记住,这是regex的独立实现,因此与regex不兼容。 POSIX。但是,只要表达式足够简单,您就不会注意到。
答案 1 :(得分:0)