• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua笔记 8

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1. Lua实现模式匹配,没有使用POSIX正则表达式和Perl正则表达式。

 一个典型的POSIX正则实现需要超过4000多行代码,比所有Lua语言标准库总大小的一半还大。

 Lua实现模式匹配代码不到600行。不如POSIX强大,但够用。

 字符串标准库基于模式4个函数:find(返回出现模式的位置),match(返回和模式匹配的字符串,以及位置),gmatch(返回出现模式的迭代器),gsub(出现模式的地方替换字符串,以及替换次数)。

2. 字符分类:

 

 

 

 除此之外,大写形式代表其补集。比如,%A代表任意非字母的字符。

 除此之外,自定义字符分类。使用方括号。比如,[0-9] 等价于 %d。  备注:短横线的使用,代表某段字符范围。

      自定义补集,使用^。比如,[^\n]代表除换行外其他字符。

 注意:使用字符分类,最好括起来。

3. 修饰符

 

 举例:1.  *  使用例子,为了匹配像 () 或 () 这样的空 括号对,就可以使用模式 %(%s*%)

    2.  跟 修饰符*总是匹配能匹配的最长序列不同。修饰符 - 只会匹配最短序列,比如找到第一个字母。

      /%*.*%*/代表匹配第一个/*和最后一个/* (类似正则的贪婪匹配)。

           /%*.-%*/代表匹配到找到第一个*/

       3. ?举例,比如匹配 +1,-20,78 这三个数值。[+-]?%d+

       4. lua中的修饰符只作用于一个字符模式。

4. 其他

    1. ^和$代表从目标字符串的开头或至结尾匹配。只有位于模式的开头和结尾时才有特殊含义。比如查找以什么开头或结尾等 ^[+-]%d$。

    2. %b 匹配成对的字符串。比如%xy表示以x开始y结尾

       3. %f[char-set] 前置模式,代表 只有在后一个字符位于 char-set 内而前一个字符不在时匹配一个空字符串。举例:

s =”the anthem is the theme” 
Print((string.gsub(s ,”%f[%w]the%f[%W]”,” one ”)))
--> one anthem is one theme    注意两个one,第一个字符前当成空字符

1.模式’%f[%w]’ 匹配位于一个非字母或数字的字符和一个字母或数字的字符之间的前置 2.模式’%f[%W]’则匹配一个字母或数字的字符和一个非字母或数字的字符之间的前置 3.指定的模式会匹配完整的单词the。 4.目标字符串的前后各有一个空字符(ASCII编码 \0)。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
LUA脚本中O(2)级素数查询发布时间:2022-07-22
下一篇:
Mac端配置Lua环境发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap