正则表达式 – 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或其他正则表达式库. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |