lua中正则表达式的坑
我在使用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中正则表达式的坑相关推荐
- lua 的正则表达式之坑
header_filter_by_lua 'local loc, err = ngx.re.match(location_str,"(https?://)([^/:\\\?]*)(:?[0- ...
- Gink掉过的坑(一):将CCTableView导入到lua中
环境: 系统:win7 64位 cocos2dx:cocos2d-2.1rc0-x-2.1.3 Visual Studio: 2012 由于项目是用lua写的,需要将cocos2dx中的方法导入到lu ...
- 【正则】Lua中的正则表达式
Lua中支持的匹配: 参考资料: 菜鸟教程 博客园:Lua的字符串匹配与正则表达式 元字符 描述 . 与任何字符配对 %a 与任何字母配对 %c 与任何控制符配对(例如\n) %d 与任何数字配对 % ...
- 正则表达式的坑与调试
正则表达式的坑与调试 nginx 配置的正则表达式 nginx 改写模块中的subs_filter 正则匹配模式配置比 传统的正则表达式 在使用转义 \ 时 多一个 \ 示例: (\\||%2f%2f ...
- lua中string.find用法
在lua的string.find方法用法为 string.find(s1, s2) 含义为查找字符串s2在s1中出现的位置,如果找不到,返回nil. 但这个方法实际上是以正则表达式来解释s2的,所以 ...
- Python中正则表达式用法 重点格式以这个为准_首看_各种问题
20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...
- Lua中的基本函数库
基本函数库为Lua内置的函数库,不需要额外装载 assert (v [, message]) 功能:相当于C的断言, 参数: v:当表达式v为nil或false将触发错误, message:发生错误时 ...
- 简单介绍Lua中的变量与赋值方法
今天小编就为大家分享一篇关于Lua中的变量与赋值方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 看以下案例: test.lua -- 第一个lua脚本 ...
- 简单介绍Lua中三种循环语句的使用
今天小编就为大家分享一篇关于Lua中三种循环语句的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 Lua的循环和C语言的循环的语法其实差不多,所以, ...
最新文章
- Linux 4.0 里,你可能再也不需要重启你的操作系统。
- mysql 事物状态有几种_MySQL知识点汇总:亿级高并发数据库运转原理大公开!
- mysql 根据当前时间戳_mysql timestamp类型 根据当前时间戳更新
- 对比AppScan Source和Fortify扫描AltoroJ的结果
- 字符串拆分成泛型列表
- Vue+ bootStrap 实现员的增删改查 离职操作 全选单选
- 中级软件测试工程师是什么水平,中级软件测试工程师需要满足的基本评定条件...
- [译]第一章:什么是管理
- android 剪切板监听_Android剪贴板操作
- Vertica中的projections
- 教您如何远离电脑病?
- 使用NAudio音频文件剪切指定片段
- 保存一个免费的在线的图片转换工具网站,支持BMP,JPG,IOC,PNG和GIF
- c# picturebox 刷新_C# picturebox画图问题
- SVN管理文件的步骤
- Autodesk全系列下载,Autodesk全版本下载
- 密码爆破工具————Medusa(美杜莎)介绍
- 听说大数据工资很高,是不是很难学?
- 一键生成smtp发件服务器文件,附录 D:创建 SMTP 服务器
- 未授权和敏感文件泄露
热门文章
- 2022-2028年中国灭火器行业市场前瞻与投资战略规划分析报告
- MySQL 学习笔记(5)— 视图优缺点、创建视图、修改视图、删除视图
- OpenCV矩阵运算
- 用sublime server 启动本地服务器(手机访问电脑页面)
- map 小模板~~~ 写的不好 继续添加
- c语言求占用内存sizeof,C语言中sizeof的用法
- linux做网卡bond,linux下设置网卡bond
- class转java_[拒绝套路,纯干货]这一百多道 Java 基础问题你掌握了吗?
- 上传图片被防火墙拦截_Web安全:文件上传漏洞
- ensp 路由表_华为模拟器ensp——静态路由实验