lua的模式匹配
模式:
- 字符类:(character classes)
. all characters
%a letters
%c control characters
%d digits
%l lower -case letters
%p punctuation characters
%s space characters
%u upper-case letters
%w alphanumeric characters
%x hexadecimal digits
%z the character whose representation is 0
- 他们的大写版本是他本身的互补。
魔法字符:
( ) . % + - * ? [ ] ^ $
- 用%进行转义。'%%'代表'%'
字符集(char -set ):使用字符集可以自定义字符类。
1.不同的字符类,和单字符之间用[]
[%w_]匹配字母数字字符和下划线。
[01]匹配二进制数
2.要想字符集内包含字符区间,起止之间加上-
[0-9] 相当于 %d
[0-9a-fA-F]相当于 %x
3.如果想得到该字符集的互补,前面加上^
[^0-7] 任何非八进制数字
重复或可选修饰符
+ 1 or more repetitions,匹配最长的,
* 0 or more repetitions 最长的
- also 0 or more repetitions 最短的
? optional (0 or 1 occurrence)
捕获
捕获机制允许一个模式串中的一部分来匹配目标串种的一部分。写法是模式串中你需要捕获的那部分用()括起来,例如:
我们也可以将捕获用于模式串自身,"(["'])(.-)%1",这里的%1表示匹配第一个捕获的一份拷贝。
local host = 'wyc.com'
local aa,bb = host:match("([^%.]+)%.([^%.]+)")
-- aa:wyc
-- bb: com
lua的string库
string.find将查找目标模板在给定字符串中出现的位置,找到返回起始和结束位置,没找到返回nil。
string.match()返回匹配到的字符。
string.gmatch函数将返回一个迭代器,用于迭代所有出现在给定字符串中的匹配字符串。
string.gsub的参数可以是string,其实,也可以是个函数,或是table,如果是函数,就会用捕获的内容作为参数调用该函数,将返回的内容作为替换字符串。如果是table,则用捕获的内容为key去取table的值来作为替换字符串,如果不存在,就不做替换。
c参考于这个 http://blog.csdn.net/booirror/article/details/39831869
lua的模式匹配的更多相关文章
- Lua模式匹配
Lua并不使用POSIX规范的正则表达式[4](也写作regexp)来进行模式匹配.主要的原因出于程序大小方面的考虑:实现一个典型的符合POSIX标准的regexp大概需要4000行代码,这比整个Lu ...
- 《The Evolution of Lua》翻译part 2
Lua2 1990年的时候,面向对象迈向巅峰,对于Lua没有面向对象的支持,我们受到了很大的压力.我们不想将Lua变成面向对象,因为我们不想“修复”一种编程范式(fix a programming p ...
- Lua 之string库
标准string库 基础字符串函数 string.len(s) 返回一个字符串的长度,例如 string.rep(s, n) 返回一个新的字符串,该字符串是参数s重复n次得到的结果,例如 )) -- ...
- lua标签解析器
lua 标签解析器 概述 一个类xml标签解析函数,将标签解析成Lua中的表结构它可以用来解析简单xml结构,可以作为RichLabel控件的字符串解析组件(其实它现在就是这么用的;-)) 原理 使用 ...
- lua的string库与强大的模式匹配
lua原生解释器对字符串的处理能力是十分有限的,强大的字符串操作能力来自于string库.lua的string函数导出在string module中.在lua5.1,同一时候也作为string类型的成 ...
- lua中的字符串操作(模式匹配)
(一). 模式匹配函数在string库中功能最强大的函数是:string.find(字符串查找)string.gsub(全局字符串替换)string.gfind(全局字符串查找)string.gmat ...
- Lua的string库函数、lua中string的模式匹配
--****************Lua的string库函数****************** --1.string.byte --string.byte (s [, i [, j]]) --取出 ...
- Lua字符串及模式匹配
字符类基础函数举例介绍: string.len( ‘string’ ) string.lower( ‘string’ ) string.upper( ‘string’ ) string.rep( ‘a ...
- 区别Lua模式匹配中 %a+ 与 .-
匹配单词与匹配字符 > print(string.gsub("hello!zzy","%a+","tina"))tina!tina ...
随机推荐
- Python——初识Python
本篇主要内容: • Python的特点 • Python的种类 • Python的编码 • Python的安装环境推荐 • Python的基础用法:输入输出,算术运算符,逻辑运算符,基本程序结构语法 ...
- 洛谷 P2312 解方程 解题报告
P2312 解方程 题目描述 已知多项式方程: \(a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\)求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) 均为正整 ...
- c语言数组传递
转自:http://blog.csdn.net/xgmiao/article/details/9570825 点击打开链接 数组作为函数实参: C语言中数组作为函数实参时,编译器总是将其解析为指向数组 ...
- Java基础语法实例(1)——实习第一天
来到广州实习的第一天,我选择的是JavaEE,因为以后的方向是Java,所以就选择了它.感觉有一段时间没有接触Java了.趁此机会好好努力,将基础巩固好. Java输入及循环,判断,字符转换,数组定义 ...
- java io 网络编程 高性能NIO
很久没写了,一是觉得这后台不怎么方便,二是 写的时候突然觉得没兴趣了. 还好,今天突然想记一下,那就随便写吧. 1.一开始还是放几个连接. 什么是 同步,异步,阻塞,非阻塞 : http://bl ...
- [转载]EasyUI中数据表格DataGrid添加排序功能
我们这里演示的是EasyUI数据表格DataGrid从服务器端排序功能,因为觉的本地数据排序没有多大的作用,一般我们DataGrid不会读取全部数据,只会读取当前页的数据,所以本地数据排序也只是对当前 ...
- python自动化测试windows gui
http://sourceforge.net/projects/pywinauto/files/pywinauto/ http://www.microsoft.com/en-us/download/c ...
- (转)vim 常用快捷键 二
转自:http://www.cnblogs.com/wangkangluo1/archive/2012/04/12/2444952.html 键盘移动 (Move) 一切都从键盘的移动 k -> ...
- OpenGL入门学习(一)(转)--环境搭建
http://blog.chinaunix.net/uid-20622737-id-1912797.html 说起编程作图,大概还有很多人想起TC的#include <graphics.h> ...
- xen 不同后端存储方案的性能对比
概述 在xen平台下,一般使用文件来模拟一个磁盘.在xen中使用文件来模拟磁盘有3种方式, blkback 直接操作 blktap2 直接将文件映射为一个裸块设备,这样vm可以直接用phy的方式进行文 ...