lua 支持的所有字符类:

.       任意字符
%s   空白符 空白字符一般包括空格、换行符\n、制表符\t以及回到行首符\r
%p   标点字符
%c   控制字符
%d   数字
%x   十六进制数字
%z   代表0的字符
%a   字母
%l   小写字母
%u   大写字母
%w   字母和数字
上面字符类的大写形式表示小写所代表的集合的补集。例如,'%A'非字母的字符:

模式修饰符

+   匹配前一字符1次或多次
*    匹配前一字符0次或多次;最长匹配  -- 先尽可能长地把本次匹配模式走完,再继续下一个模式,
-    匹配前一字符0次或多次;最短匹配  -- 本次匹配模式每走一步,就考查下一个模式能否进入.
?   匹配前一字符0次或1次
^   匹配字符串开头
$   匹配字符串结尾

模式串中的特殊字符

( ) . % + - * ? [ ^ $
'%'   用作特殊字符的转义字符
'%.'     匹配点;
'%%'   匹配字符 '%'。
转义字符 '%'不仅可以用来转义特殊字符,还可以用于所有的非字母的字符。当对一个字符有疑问的时候,为安全起见请使用转义字符转义他。

用'[]'创建字符集

'[%w_]'    匹配字母数字和下划线
'[01]'        匹配二进制数字
'[%[%]]'    匹配一对方括号

在'[]'  中 使用连字符'-'
'%d'    表示 '[0-9]';
'%x'    表示 '[0-9a-fA-F]'
'[0-7]' 表示 '[01234567]'

在'[]'开始处使用 '^' 表示其补集:
'[^0-7]'    匹配任何不是八进制数字的字符;
'[^\n]' 匹配任何非换行符户的字符。
'[^%s]' == '%S'

捕获:用()将要捕获的部分包围起来:

pair = "name = Anna"
firstidx, lastidx, key, value = string.find(pair, "(%a+)%s*=%s*(%a+)")
print(key, value) <== name Anna
我们也可以将捕获用于模式串自身,"([\"'])(.-)%1",这里的%1表示匹配第一个捕获的一份拷贝。

1. 匹配首尾空白符

string.gsub(input, "^[ \t\n\r]+", "")
空白字符一般包括空格、换行符\n、制表符\t以及回到行首符\r,当然如果有特殊需求需要将其他的字符也当做空白字符也都是可以的!

string.gsub(input, "%s+$", "")   %s 代表  空白符

string.gsub(input, "^%s*(.-)%s*$", "%1")

return (string.gsub(input, "^%s*(.-)%s*$", "%1"))加一层括号,只返回格式化后的字符串!

lua 匹配空白符的更多相关文章

  1. str_replace中的匹配空白符,必须用双引号

    例: $minUnit = str_replace(array('\r','\n'),"",$content); 执行上面的语句,你会发现,文本没有任何变化,该换行的地方还是换行. ...

  2. (转)LUA正则表达式不完全指南

    转自剑侠论坛,并稍微修改个别文字. 好不容易闲下来,研究了一下正则表达式,然后越钻越深,经过跟大神们讨论学习后,就没有然后了.总之╮(╯▽╰)╭很有用的一个东西,至少对于用户输入的读取方面会比较方便, ...

  3. Lua知识备忘录

    最近对Lua很感兴趣,以下是本阶段学习的总结,包含三部分,一部分是基础语法,一部分是扩展和解释器嵌入,最后一部分是Lua小练习. 知识涉及:Lua语言编程基础:Lua&C++:Lua扩展.嵌入 ...

  4. 常用lua代码块

    1.读取请求体中参数 local request_method = ngx.var.request_method local args --获取参数的值 if "GET" == r ...

  5. python中正则匹配之re模块

    Python中正则表达式 re:re是提供正则表达式匹配操作的模块 一.什么是正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某个模式匹配,Python 自1.5版本起 ...

  6. 详解Javascript中正则表达式的使用

    正则表达式用来处理字符串特别好用,在JavaScript中能用到正则表达式的地方有很多,本文对正则表达式基础知识和Javascript中正则表达式的使用做一个总结. 第一部分简单列举了正则表达式在Ja ...

  7. jQuery-template.js学习

    花了点时间,看了下jQuery-template.js,不多废话,先上结构 jQuery.each({..},function(){}) jQuery.fn.extend({..}) jQuery.e ...

  8. [每日一题JS] 正则表达式

    判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母.数字.下划线,总长度为5-20 var reg = /\b[a-zA-Z]{1}[a-zA-Z0-9_]{4,19}\b/; var fl ...

  9. md笔记——正则学习

    正则表达式 在线调试正则1 在线调试正则2 规则记录 \d 匹配一个数字字符.等价于[0-9] \D 匹配一个非数字字符.等价于[^0-9]. . 通配符,可以匹配任意字符. ? 表示量词" ...

随机推荐

  1. 实训任务05 MapReduce获取成绩表的最高分记录

    实训任务05  MapReduce获取成绩表的最高分记录 实训1:统计用户纺问次数 任务描述: 统计用户在2016年度每个自然日的总访问次数.原始数据文件中提供了用户名称与访问日期.这个任务就是要获取 ...

  2. Python入门学习例子——从Hao123获取图片

    import urllib.requestimport re #获取html页面内容def getHtml(url): data=urllib.request.urlopen(url) pageCon ...

  3. JS之工厂模式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Flutter 卡在 package get 的解决办法

    今天在尝试使用Flutter 的时候,需要使用一个第三方库 修改了 pubspec 文件之后,AS 像往常一样提示 需要 package get. 之前都挺正常,不知道今天怎么了. 一直处在 Runn ...

  5. seckill(1)秒杀系统主要步骤

  6. golang反射

    要点 1.变量 2.反射 3.结构体反射 4.反射总结以及应用场景 一.变量介绍 1.变量的内在机制 A.类型信息,这部分是元信息,是预定义好的 B.值类型,这部分是程序运行过程中,动态改变的 var ...

  7. JS查看对象属性的方式

    var person = { type: 'person', say: function(){ console.log("Hellow World!") } } //以person ...

  8. c语言实现两个单链表的交叉合并

    #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; struc ...

  9. Springboot 定时任务,service层无法注入问题详细解决

    开发一个微信小程序后台,建立websocket 长连接,需要后台开启定时任务, 定时任务定时查库,相应前台 但是具体执行过程中一直在报空指针错误,最后定位到service 为空,无法调用其相关的方法导 ...

  10. JODA-TIME获取本月的第一天及最后一天

    1.获取当前时间: LocalDate now = LocalDate.now(); 2.本月第一天: LocalDate firstDayOfCurrentMouth = now.dayOfMont ...