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. C# Vs2017启动调试,debug或者release调试状态闪一下程序就独立运行了

    最近发现一个没太大影响但是很奇怪的事情,编辑状态下点击调试,发现和之前的项目不一样,调试状态闪一下,程序就“独立了”,不受调试状态的控制了. 找了半天才发现,是在program.cs里加了一段代码引起 ...

  2. js显示表单的提交验证

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. Ubuntu下Caffe实现物体分类

    参考链接: ubuntu下配置Caffe:https://blog.csdn.net/a_z666666/article/details/72853346 https://www.cnblogs.co ...

  4. PAT B1023

    PAT B1023 标签(空格分隔): PAT 解决方法:贪心法 #include <cstdio> int main() { int count[10]; for (int i = 0; ...

  5. dapper.simplecurd

    [Table("Users")]//真实表名 publicclass User { [Key] publicint UserId { get; set; } [Column(&qu ...

  6. css中关于单位的一些问题

    Css中关于单位的一些问题 相对字体长度: Em:Em 是一个相对单位.起初排版度量时是基于当前字体大写字母”M”的尺寸的.当改变font-family时,它的尺寸不会发生改变,但在改变font-si ...

  7. git 合并分支到master

    git 合并分支到master   假如我们现在在dev分支上,刚开发完项目,执行了下列命令 git add .git commit -m ‘dev'git push -u origin dev 然后 ...

  8. makefile笔记5 - makefile变量

    在 Makefile 中的定义的变量,就像是 C/C++语言中的宏一样,他代表了一个文本字串,在 Makefile 中执行的时候其会自动原模原样地展开在所使用的地方.其与 C/C++所不同的是,你可以 ...

  9. <iframe> 标签 中 src 的三种形式. display , echart

    1.形式一: <iframe scrolling="yes" src="action.php?c=HLogin&a=linkPage&p=fx&qu ...

  10. 2018-No.7-SicnuCtf

    5月份的比赛现在才有时间在博客贴出来,这是我第二次出题了,第一次是上届的初赛,这次是决赛的题. 签到(base_or_base) 解压得到两个文件小明.zip和......txt,根据文件名提示猜测是 ...