Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用LPeg制作Lua模式不区分大小写_Lua_Pattern Matching_Case Insensitive_Lua Patterns_Lpeg - Fatal编程技术网

用LPeg制作Lua模式不区分大小写

用LPeg制作Lua模式不区分大小写,lua,pattern-matching,case-insensitive,lua-patterns,lpeg,Lua,Pattern Matching,Case Insensitive,Lua Patterns,Lpeg,我有一个应用程序,支持纯文本搜索和使用Lua模式的搜索。为了方便起见,该应用程序支持不区分大小写的搜索。以下是一个图像片段: 将给定的Lua模式转换为不区分大小写的Lua模式的代码并不漂亮。它基本上担心字符前面是否有奇数或偶数的转义符(%),以及它是否位于方括号内。图像中显示的图案变成%a[bB][bB]%[cC][%abB%%cC] 我还没有机会学习LPeg,我想这可能是我的动力 我的问题是,这是否是LPeg可以轻松处理的事情? < P>是的,但是为了更容易地进入LPEG世界,考虑LPeg的

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

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

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


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

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


<>你的规则的结构会自动处理奇数区分,括号上下文,etc. LPeg使用“有序选择”,所以如果你先添加你的逃逸规则,它将正确地处理%[例如,避免与括号规则混合]。

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


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

谢谢!我没有考虑过只使用RE,这使它更容易:)谢谢!我没有考虑过只使用RE,这使它更容易:)