lua lpeg
来源:互联网 发布:劲舞团淘宝商城 编辑:程序博客网 时间:2024/06/18 14:26
最近再学ulua,记录下
lpeg:基本用来处理字符串的,
local lpeg=require “lpeg”
local p=lpeg。P//匹配一个字符串
local s=lpeg。S//匹配一个集合
local r=lpeg。R//匹配一个范围内的数或者字母
lpeg。match(des,sources)//拿des和sou的第一个字符串进开始行匹配,完全一样则返回des的长度加1,否则直接返回nil
上面的方式默认用的是p的形式
等于lpeg。match(p“des”,sources) p:math(sources)
例子:lpeg。match(p“des”,“des1”)--->4
lpeg。match(s“des”,“des1”)---》2
第一不匹配的话直接返回nil
2.想匹配一样的字符串很多个的时候可以用^
lpeg。match(“a”^1,“aabb”)---》3
lpeg。match(“a”^-1,“aabb”)---》2
lpeg。match(“a”^-1,“baabb”)---》1
当为-1的时候是匹配1或者0个 没匹配到返回1,匹配到了返回2
3.假如想找a后面多个b的情况
lpeg。match(“a”דb”^1,“aabb”)---》错误不能这样写
lpeg。match(p“a”×p“b”^1,“aabb”)---》不能省略输出 nil 匹配失败
lpeg。match(p“a”×p“b”^1,“abb”)--》4
lpeg。match(s“a”×s“b”^1,“abb”)--》4 --s失败了,这样的表达式不支持整体
lpeg。match(p“a”^-1*p“b”^1,“aabb”)-->nil --第一个不影响什么,第二个要B的时候匹配失败
4.+号表示匹配任意一个
lpeg。match(“a”+"b","a")--失败,不能省略的写
lpeg。match(p“a”+p"b","a")--成功为2
lpeg。match(p(“a”+"b"),"a")--失败,没有所谓的结合律
lpeg。match(p“a”^1+p"b"^1,"aaabbb")--3 匹配A成功并且有3个
lpeg。match(p“a”^-1+p"b"^1,"caaabbb")--1因为永远满足条件
lpeg。match(r"09"^1,"45611")--匹配任意个数字
5.有了匹配肯定有捕获
c=lpeg。C(lpeg。R“09”^1,"456")--返回456
c=lpeg。C(s“+-”^1*lpeg。R“09”^1,"+456")--返回+456
c=lpeg。C(s“+-”^-1*lpeg。R“09”^1,"+-456")--错误
c=lpeg。C(p“+-”^1*lpeg。R“09”^1,"+456")--错误
c=lpeg。C(p“+-”^1*lpeg。R“09”^1,"+-456")--前面的表达式必须完全一致 +-456
想要任意一个表达式的时候用S,如果想完全一样则用P
6.特殊的/,将会把结果赋值给一个函数或者是table
ru:
local temp=lpeg。C((s“+-”^1*lpeg。R“09”^1)/tonumber,"-456")+1=== -455
也可以返回多个捕获
ru:
print(lpeg。C(“a”^1)*lpeg。C("b"^1),"aabbcc")--这里测试只会输出aa,不会输出bb 如果开头没有匹配到aa那么直接返回nil
- lua lpeg
- lpeg-0.12.2 与struct-0.2 加入cocos2d-x-lua工程
- lpeg使用
- LPeg编程指南
- LPEG库简介
- LPeg 0.10的编译与使用
- LPeg 0.10的编译与使用
- LUA
- Lua
- LUA
- lua
- Lua
- lua
- lua
- lua
- lua
- lua
- lua
- 杭电1711Number Sequence
- hpuoj 1690 组合数【DFS】
- 矩阵的四次方
- MYSQL中的my.cnf中文说明
- Java串口通信 ----> 扫描标签获取数据存入数据库
- lua lpeg
- 大数阶乘
- Integration of Polynomial (周赛1)
- UVA 10066 -The Twin Towers(最长公共子序列)
- (10) Session
- C++中虚函数的作用及用法
- 清除缓存
- long long 与int的区别
- hdu 5215 Cycle