lua 匹配空白符

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"))加一层括号,只返回格式化后的字符串!