Gol*_*les 6 regex lua pattern-matching
我是Lua正则表达式等价函数的新手,我需要编写以下正则表达式,它应该匹配带小数的数字
\b[0-9]*.\b[0-9]*(?!])
Run Code Online (Sandbox Code Playgroud)
基本上,它匹配十进制格式的数字(例如:1,1.1,0.1,0.11),它们不以']'结尾,我一直试图用Lua使用这样的正则表达式string.gmatch,但我很缺乏经验与Lua匹配表达式...
谢谢!
Lua没有正则表达式,主要是因为完整的正则表达式库比Lua本身更大.
Lua所具有的是匹配模式,这些模式的功能不那么强大(但对于许多用例来说仍然足够):
我认为没有Lua模式可以匹配你的字符串的每一个可能的出现,而没有其他的,这意味着你必须以某种方式解决这个问题.
Stuart提出的模式%d*%.?%d*匹配所有十进制数(带或不带点),但它也匹配空字符串,这不是很有用.%d+%.?%d*匹配所有十进制数字,在点之前至少有一个数字(或没有点),%d*%d.?%d+匹配所有十进制数字后点(或没有点)至少一个数字.%.%d+在点之前匹配没有数字的十进制数字.
一个简单的解决方案是搜索多个这些模式(例如,两者%d+%.?%d*和%.%d+),并组合结果.然后查看找到它们的地方,看看它们后面是否有']'.
我用前沿模式进行了一些实验.
该模式%f[%.%d]%d*%.?%d*%f[^%.%d%]]匹配所有十进制数字,前面是既不是数字也不是点(或什么都不是),后面跟既不]是数字也不是点(或什么都不是).但它也匹配单点.