使用LPeg使Lua模式不区分大小写

时间:2012-11-15 19:40:42

标签: lua pattern-matching case-insensitive lua-patterns lpeg

我有一个应用程序(除其他外)支持使用Lua模式的纯文本搜索和搜索。为方便起见,该应用程序支持不区分大小写的搜索。这是一个图片摘录:

(

将给定的Lua模式转换为不区分大小写的Lua模式的代码并不太漂亮。它基本上担心一个字符是否前面有奇数或偶数个转义符(%)以及它是否位于方括号内。图像中显示的图案变为%a[bB][bB]%%[cC][%abB%%cC]

我还没有机会学习LPeg,我想这可能是我的动力。

我的问题是这是否是LPeg可以轻易处理的事情?

1 个答案:

答案 0 :(得分:4)

是的,但是为了更容易进入LPeg世界,请考虑LPeg的“re”模块,它为您提供类似于正则表达式的语法,您可以在语法中指定一组规则(想想Yacc等等)。 )。您基本上是为转义字符,括号组和常规字符编写规则。然后,您可以将函数与规则相关联,这些规则将发出与输入相同的文本或不区分大小写的修改版本。

你的规则的结构会自动处理偶数奇怪的区别,括号上下文等.LPeg使用“有序选择”,所以如果你先添加你的转义规则,它会处理%[正确并避免混合它例如,使用括号规则。