我在使用OpenResty编写lua代码时,需要使用到lua的正则表达式,其中pattern是这样的,

--热水器设置时间
local s = '12:33'
local pattern = "(20|21|22|23|[01][0-9]):([0-5][0-9])"
local matched = string.match(s, "(20|21|22|23|[01][0-9]):([0-5][0-9])")
print(matched)

因为我的业务需求是,表示24进制的时间:23:09

但是我发现,这个pattern始终不能得到我想要的匹配结果。这个普通的pattern在其它的编程语言,比如C、C++,python,perl,PHP等中,都不会有啥问题的,为啥就行不通呢?

后来我查询了网上的资料,并逐个尝试不同的pattern,发现只要出现"|"就不行!

下面是我验证代码

#!/usr/bin/lua
--注意:lua正则表达式中没有|这个元字符local s = '12:04'
print(string.match(s, "[01][0-9]:[0-5][0-9]"))
print(string.match(s, "[01]%d:[0-5]%d"))
print(string.match(s, "[0-1]%d:[0-5]%d"))
print(string.match(s, "(2[0-3]|[01][0-9]):[0-5][0-9]"))local s = '23:59'
print(string.match(s, "2[0-3]:[0-5][0-9]"))
print(string.match(s, "2[0-3]:[0-5]%d"))

下面是输出结果的截图

为此,我找到lua正则表达式中的坑,它与其它语言都不同:

在正则表达式中没有"|"元字符

如果要表示多种可能并列的情况,只能写多个pattern了。

lua中正则表达式的坑相关推荐

  1. lua 的正则表达式之坑

    header_filter_by_lua 'local loc, err = ngx.re.match(location_str,"(https?://)([^/:\\\?]*)(:?[0- ...

  2. Gink掉过的坑(一):将CCTableView导入到lua中

    环境: 系统:win7 64位 cocos2dx:cocos2d-2.1rc0-x-2.1.3 Visual Studio: 2012 由于项目是用lua写的,需要将cocos2dx中的方法导入到lu ...

  3. 【正则】Lua中的正则表达式

    Lua中支持的匹配: 参考资料: 菜鸟教程 博客园:Lua的字符串匹配与正则表达式 元字符 描述 . 与任何字符配对 %a 与任何字母配对 %c 与任何控制符配对(例如\n) %d 与任何数字配对 % ...

  4. 正则表达式的坑与调试

    正则表达式的坑与调试 nginx 配置的正则表达式 nginx 改写模块中的subs_filter 正则匹配模式配置比 传统的正则表达式 在使用转义 \ 时 多一个 \ 示例: (\\||%2f%2f ...

  5. lua中string.find用法

    在lua的string.find方法用法为 string.find(s1, s2) 含义为查找字符串s2在s1中出现的位置,如果找不到,返回nil. 但这个方法实际上是以正则表达式来解释s2的,所以 ...

  6. Python中正则表达式用法 重点格式以这个为准_首看_各种问题

    20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...

  7. Lua中的基本函数库

    基本函数库为Lua内置的函数库,不需要额外装载 assert (v [, message]) 功能:相当于C的断言, 参数: v:当表达式v为nil或false将触发错误, message:发生错误时 ...

  8. 简单介绍Lua中的变量与赋值方法

    今天小编就为大家分享一篇关于Lua中的变量与赋值方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 看以下案例: test.lua -- 第一个lua脚本 ...

  9. 简单介绍Lua中三种循环语句的使用

    今天小编就为大家分享一篇关于Lua中三种循环语句的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 Lua的循环和C语言的循环的语法其实差不多,所以, ...

最新文章

  1. Linux 4.0 里,你可能再也不需要重启你的操作系统。
  2. mysql 事物状态有几种_MySQL知识点汇总:亿级高并发数据库运转原理大公开!
  3. mysql 根据当前时间戳_mysql timestamp类型 根据当前时间戳更新
  4. 对比AppScan Source和Fortify扫描AltoroJ的结果
  5. 字符串拆分成泛型列表
  6. Vue+ bootStrap 实现员的增删改查 离职操作 全选单选
  7. 中级软件测试工程师是什么水平,中级软件测试工程师需要满足的基本评定条件...
  8. [译]第一章:什么是管理
  9. android 剪切板监听_Android剪贴板操作
  10. Vertica中的projections
  11. 教您如何远离电脑病?
  12. 使用NAudio音频文件剪切指定片段
  13. 保存一个免费的在线的图片转换工具网站,支持BMP,JPG,IOC,PNG和GIF
  14. c# picturebox 刷新_C# picturebox画图问题
  15. SVN管理文件的步骤
  16. Autodesk全系列下载,Autodesk全版本下载
  17. 密码爆破工具————Medusa(美杜莎)介绍
  18. 听说大数据工资很高,是不是很难学?
  19. 一键生成smtp发件服务器文件,附录 D:创建 SMTP 服务器
  20. 未授权和敏感文件泄露

热门文章

  1. 2022-2028年中国灭火器行业市场前瞻与投资战略规划分析报告
  2. MySQL 学习笔记(5)— 视图优缺点、创建视图、修改视图、删除视图
  3. OpenCV矩阵运算
  4. 用sublime server 启动本地服务器(手机访问电脑页面)
  5. map 小模板~~~ 写的不好 继续添加
  6. c语言求占用内存sizeof,C语言中sizeof的用法
  7. linux做网卡bond,linux下设置网卡bond
  8. class转java_[拒绝套路,纯干货]这一百多道 Java 基础问题你掌握了吗?
  9. 上传图片被防火墙拦截_Web安全:文件上传漏洞
  10. ensp 路由表_华为模拟器ensp——静态路由实验