zoukankan      html  css  js  c++  java
  • lua 匹配空白符

    lua 支持的所有字符类:

    .       任意字符
    %s   空白符 空白字符一般包括空格、换行符 、制表符 以及回到行首符
    %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]'    匹配任何不是八进制数字的字符;
    '[^ ]' 匹配任何非换行符户的字符。
    '[^%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, "^[ ]+", "")
    空白字符一般包括空格、换行符 、制表符 以及回到行首符 ,当然如果有特殊需求需要将其他的字符也当做空白字符也都是可以的!

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

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

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

  • 相关阅读:
    个人号微信机器人开发
    群控系统开发sdk服务端调用方法
    微信个人号scrm客服通信协议定义
    微信crm客服系统使用sdk定制开发(持续更新中!)
    微信客服crm系统接口定义(完善中)
    压测工具-ab
    设计模式之美学习-结构型-享元模式(二十五)
    设计模式之美学习-结构型-组合模式(二十四)
    设计模式之美学习-结构型-门面模式(二十三)
    设计模式之美学习-结构型-适配器模式(二十二)
  • 原文地址:https://www.cnblogs.com/chenpython123/p/10419019.html
Copyright © 2011-2022 走看看