knrt.net
当前位置:首页 >> LUA 正则表达式 >>

LUA 正则表达式

Lua中修饰符 - 和 * 都表示匹配前一字符0次或多次,但 - 进行的是最短匹配,类似传统正则中的非贪婪匹配,而 * 则是最长匹配,即贪婪匹配由于你正则中最后一个(%d-)后面没有任何东西了,那这个 - 进行了最短匹配,即什么都不匹配,所以没有捕获到1999,而加上$后,由于有了结尾标识位,- 就必须匹配1999才能使整个正则匹配通过,所以就捕获了1999,或者你可以把最后个 - 换成 *,也可以捕获1999的

匹配一下就好模式用^匹配行首 $匹配行尾,就能知道是否是完整匹配.line=io.read("l")if string.match(line,"^[%w_]+$") thenprint ("yes")end

function extractChinese(s) for m in string.gmatch(s,'"[\176-\254]+"') do print(m) endendss = 'foo"中文"a"你好"foo'extractChinese(ss)上面的输出为:中文你好注意:这个函数假设你的“中文”是GB2312编码.如果是UTF-8编码,需要改一下.PS: 你们公司是哪个公司啊?这样的水平还发布海外版本的游戏?不是说你哦,而是你们公司.

这其实是一个对于编程而言很基础的问题lua的语法中,函数(完成一定功能的一个小模块) 执行完可以得到一个运算结果而这个运算结果是boolean类型的值true

参考那个随机文档就可以了. 和一般的正则表达式不一样,大部分表达式是基于pcre的,而lua的是非常精炼的,所以使用上跟一般的用法差别很大.

这是nginx服务器的lua扩展中的正则表达式用的函数.ngx -- nginx服务器re -- regex 正则表达式match() -- 模式匹配

([\u4E00-\u9FA5]*)(\w*)

local a = ".1.3.6.1.2"local b = "1.3.6.1.2"print(string.match(a,"%.?(1%.3%.6%.1%.2)"))首先你要注意 小数点是特殊字符 所以要转义 使用%.其次 你要提取出来的地方用括号括起来 就能得到你想要的部分了我这里使用的是match 得到的是你要匹配的部分 如果换成find 就能得到匹配的部分的下标起始位置

没用过lua,但有match字样那基本就是正则表达式了,查了一下,如下.(点): 与任何字符配对%a: 与任何字母配对%c: 与任何控制符配对(例如\n)%d: 与任何数字配对%l: 与任何小写字母配对%p: 与任何标点(punctuation)配对%s

lua里不像c一样区分字符串和字符.比如:b = a:match("gig.-gvt") --提取包含头尾的字符串 print(b:sub(4, string.len(b)-3)) --去除头尾 总的来说通过string.match或者string.sub来提取字符串,结合patterns(弱化版的正则表达式)进行通配;具体

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com