2

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

(

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

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

我的问题是这是否是 LPeg 可以轻松处理的?

4

1 回答 1

5

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

您的规则结构将自动处理奇偶区分、括号上下文等。LPeg 使用“有序选择”,因此如果您首先添加转义规则,它将正确处理 %[ 并避免将其与例如括号规则。

于 2012-11-16T14:51:54.850 回答