LPeg 0 10的编译与使用
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
官网地址:http://www.inf.puc-rio.br/~roberto/lpeg/
LPeg是一个为Lua所使用的新的模式匹配库,基于解析表达式语法(PEGs)。
1.新建“Win32 Console Application”工程,工程名为:lpeg
2.在“Application Settings”中,选择“DLL”和“Empty project”
3.添加下载的“lpeg.h”、“lpeg.c”到工程中
4.菜单栏→“Project”→“Properties”,配置“All Configurations”,"Additional Include Directories"添加"...\Lua\5.1\include","Additional Library Directories"添加"...\Lua\5.1\lib","Additional Dependencies"添加"lua5.1.lib"
5.菜单栏→“Project”→“Add New Item”→“Modele-Definition File(.def)”,名称为:lpeg
6.“lpeg.def”的内容为:
1
2 |
LIBRARY "lpeg"
EXPORTS luaopen_lpeg |
7.编译Release版本
8.测试使用,新建一个lua脚本,内容为:
1
2 3 4 5 6 7 8 |
local lpeg = require "lpeg"
-- matches a word followed by end-of-string print(p:match("hello")) --> 6 |
9.运行如下图所示:
Simple Matching 简单匹配
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
local lpeg = require "lpeg"
local match = lpeg.match -- 对字符串匹配给定的模式 -- 匹配字符串的开头,成功则返回匹配之后的位置,失败返回nil -- 匹配一个范围之内,匹配一个集合之内 -- 匹配一个以上的项 -- 符号*组合模式,匹配a之后,再匹配0或多个b -- 组合模式,匹配一个或0个a,再匹配b -- 符号+匹配其中任意一个 |
Basic Captures 基本捕获
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
local lpeg = require "lpeg"
local match = lpeg.match -- 对字符串匹配给定的模式 local C = lpeg.C -- 捕获匹配 -- 捕获数字 -- 包含+-符号 -- 对捕获的字符串通过一个功能 -- 返回多个捕获,就像string.match |
Building more complicated Patterns 构建更复杂的模式
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
local lpeg = require "lpeg"
local match = lpeg.match -- 对字符串匹配给定的模式 local C = lpeg.C -- 捕获匹配 -- 考虑一般的浮点数,等同于正则[-+]?[0-9]+\.?[0-9]+([eE][+-]?[0-9]+)? -- 从列表识别数字 -- 放进实际的表 -- 转换类型 -- 忽略空格 -- 匹配标识符 -- 使用语言环境无关定义 -- 类似的CSV格式 |
参考资料:
1.http://www.inf.puc-rio.br/~roberto/lpeg/
2.http://lua-users.org/wiki/LpegTutorial
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
LPeg 0 10的编译与使用相关推荐
- 编译安装mariadb-10.0.10
安装cmake centos上编译mariadb5.5以上的需要至少cmake2.6,如果是rpm包,则需要至少cmake2.8.7以上. [root@school ~]# tar xf cmake- ...
- 安卓自定义音量键_红米2|LineageOS17.0|安卓10.0|2.4编译|顶级流畅|超强跑分|全新手势|强力推荐...
红米2|LineageOS17.0|安卓10.0|2.4编译|顶级流畅|超强跑分|全新手势|强力推荐 第三方ROM不保证无bug下载需谨慎,但是真的是非常好用 ★★刷机需知★★ .务必解锁BL!务必解 ...
- 基于Web的Kafka管理器工具之Kafka-manager的编译部署详细安装 (支持kafka0.8、0.9和0.10以后版本)(图文详解)(默认端口或任意自定义端口)...
不多说,直接上干货! 至于为什么,要写这篇博客以及安装Kafka-manager? 问题详情 无奈于,在kafka里没有一个较好自带的web ui.启动后无法观看,并且不友好.所以,需安装一个第三方的 ...
- 【原创】Pig 0.10.0 piggybank 如何编译
在Pig 0.10.0中 piggybank源程序已经包含在contrib文件夹中,但是没有编译成jar包形式,需要自己用ant编译,官方的参考文档https://cwiki.apache.org/c ...
- python 3.10.0源码编译安装
python 3.10.0源码编译安装 文章目录 python 3.10.0源码编译安装 1. 安装编译依赖工具 2. 下载python 3.10.0 3. 编译安装 Python 4. 体验 1. ...
- TensorFlow tfjs 0.10.3 发布
翻译 | 王柯凝 出品 | AI科技大本营(公众号ID:rgznai100) TensorFlow tfjs 0.10.3 近日正式发布,新版本主要有以下改进内容,AI科技大本营对其编译如下. ▌资源 ...
- CentOS7下安装Redis伪集群(基于Redis官方Cluster集群模式版本redis-5.0.10)
文章目录 Redis简介 什么是redis redis的优点 Redis集群都有哪些模式 主从复制(Master-Slave Replication) 哨兵模式(Sentinel) Redis官方 C ...
- cmake 编译curl源码_OpenCV4.0 源码编译
之前写过几篇关于OpenCV的博客,都是基于openCV 3.14写的,10月份OpenCV发布了4.0的bate版本,我就切换到4.0版本上来.之后的博客都会是基于4.0版本的.本文主要介绍一下三个 ...
- redis-4.0.10集群安装(3台机器,6个node),以及在Spring项目中的集成,redis操作工具类
1 Redis安装 redis高可用的三种常见的集群方式:redis sentinel .redis cluster(多主机+分布式).redis sharding.接下来主要介绍redis sent ...
最新文章
- 二分查找对应的二叉树的成功和失败ASL
- Java code lib aes 加解密
- c#.net课程设计:ZCMU通讯录(待更新)
- linux中怎么给用户设置不同的权限,linux怎么将一个文件设置为多个人拥有或者同一组内只让某两个用户有删除权限?...
- php从网页获得数据,php根据URL获得网页内容
- 服务器群集:Windows 2000 和 Windows Server 2003 网络配置的最佳做法(转自Technet)
- int、bigint、smallint 和 tinyint范围
- 单片机死机了怎么办?
- HTC Vive开发笔记之手柄控制
- 环境篇-Windows下安装OpenSSL
- matlab求两向量夹角_【求精干货】高中数学知识点总结归纳高一学生必须掌握
- 体育直播android,500体育直播
- 【QImage类常用函数】
- 【转载】间谍新高度:间谍组织​Turla利用卫星通信隐藏CC服务器
- 智能家居控制模拟套件
- talent 远程登录 AAA 认证
- 明尼苏达量表结果分析_明尼苏达满意度量表+【长式量表100题】+【稀缺资源】+【免费分享】...
- w3cshool之JavaScript对象_Date
- 开源多媒体项目汇总与分析
- 计算机病毒发展趋势多元化,新型计算机病毒的发展趋势,特征和技术。ppt
热门文章
- Hystrix面试 - Hystrix 隔离策略细粒度控制
- 60秒验证码倒计时重置
- BPDU内容、BPDU中flag位详解、RSTP协议BPDU中的flag位和STP中的BPDU flag位的区别(附图,建议PC观看)
- Node.js_1.1
- Pipe——高性能IO(二)
- 【Day01】你有封装过 axios 吗?主要是封装哪些方面?如何中断 axios 请求?
- 【Python】Python库之数据可视化
- 注册表操作命令reg
- flexbox算法实现_如何使用Flexbox实现水平滚动
- 如何为JavaScript选择文本编辑器