加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – Lua:模式匹配多字符与?重复运算符

发布时间:2020-12-14 05:59:43 所属栏目:百科 来源:网络整理
导读:根据 the docs,所有Lua重复运算符仅适用于单个字符,因此您可以匹配 string.match('123','1?(%d+)') -- returns 23 但无法匹配多字符字符串: string.match('123','(12)?(%d+)') -- want this to return 3 文档说这可能通过“多种模式和自定义逻辑”,但我不知
根据 the docs,所有Lua重复运算符仅适用于单个字符,因此您可以匹配

string.match('123','1?(%d+)') -- returns 23

但无法匹配多字符字符串:

string.match('123','(12)?(%d+)') -- want this to return 3

文档说这可能通过“多种模式和自定义逻辑”,但我不知道这意味着什么.有人能提供一种模式匹配的方法吗?基本上,12应该可选地匹配全有或全无,并返回数字串的其余部分.

解决方法

我认为“多种模式和自定义逻辑”在这里意味着这样的用法:

string.match('123','12(%d+)') or string.match('123','(%d+)')

由于或是短路,如果第一个模式匹配,则它将是表达式的值,否则第二个模式将尝试匹配.这正是正则表达式(12)?(%d)的意思.

另请注意,Lua有更强大的LPeg或其他正则表达式库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读