string.match(str, pattern)
func = string.gmatch(str, pattern)
io.open()
结果 = string.match("abcd","abc")
io.print( 结果 )//显示abc
io.open()
结果 = string.match("abcd1234567890","123456789")
io.print( 结果 )//显示123456789
特定字符 | 匹 配 | 示 例 |
\d | 任意一个 数字,0~9任意一个数字 | ”\d\d“模式匹配字符串”abc123时,匹配结果12 |
\w | 任意一个字母、数字、也就是A~Z,a~z,0~9 中任意一个(不匹配下划线,与正则区别) | “\w”模式匹配字符串“aa100时,匹配结果a |
\s | 空白符,包括空格、制表符、换行、换页符其中任意一个 空格(' ')、制表符 ('\t')、回车('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f') | "\d\s"模式匹配字符串”aa 23 65“时,匹配结果3 |
\D | \d取反,非数字 | "\D\D\D\D"模式匹配字符串"dadj1323DDa"时,匹配结果是dadj |
\W | \w取反,非字母、数字、下划线 | "\W\W"模式匹配字符串"dadj,!23DDa"时,匹配结果是,! |
\S | \s取反,非空白符 | "\S"模式匹配字符串'\ndadj,!23DDa'时,匹配结果是d(在快手字符串单引号’支持转义符) |
字符 | 匹配 | 字符 | 匹配 |
\a | 任意一个大小写字母,也即是A-Z,a-z | \A | \a 取反,任意一个非字母的字符,含数字、符号、空白符中一个 |
\l | 任意一个小写字母,也即是a-z中的一个 | \L | \l 取反,任意一个非小写字母的字符 |
\u | 任意一个大写字母,即A-Z中的一个 | \U | \u 取反,任意一个非大写字母的字符 |
\p | 任意一个标点字符 | \P | \p 取反,任意一个非标点字符的字符 |
\c | 任意一个控制字符(与空白符??) | \C | \c 取反,任意一个非控制字符的字符 |
\n | 任意一个换行符 | \N | \n 取反,任意一个非换行符 |
\r | 回车符 | \R | \r 取反,非回车符 |
\f | 换页符 'x0c' | \F | \f 取反,非换页符 |
\i | 是否ASCII字符( 字节码 < 0x80 ) | \I | \i 取反,不是ASCII字符( 字节码 >= 0x80 ) |
\x | 任意一个十六进制数字 | \X | \x 取反,不是十六进制数字 |
\v | 一个垂直制表符。等价于 '\x0b' | \V | \v 取反,不是垂直制表符 |
\z | \0 字节码为0的字符,对于普通文本表示文本结束 | \Z | \z 取反,不是\0的字符 |
字符 | 匹配 | 示例 |
. | 圆点号,匹配任意一个单字节字符,包括换行符\n(与正则区别); 可放在尖括号<>内; 点号放在转义符\.或中括号[.]内则只匹配点号本身 | "..."模式匹配字符串'\nkdja,.kl',匹配结果\nkd; "\..."模式匹配字符串 '\nkdja,.kl',匹配结果.kl |
: | 冒号任意一个双字节字符(中文字符),不适用于UNICODE编码字符; 可放在尖括号<>内,等同<\xA1-\xF7\xA1-\xFE>匹配中文; 冒号放在转义符\:或中括号[:]内则只匹配冒号本身 | 见示例3 |
io.open();//打开控制台
str = "快手真快速"
//{4}是修饰符,修饰前面表达式出现次数
io.print(string.match(str,".{4}") );//显示“快手”2个中文
io.print(string.match(str,":{4}") );//显示“快手真快”4个中文
io.print(string.match(str,":"));//显示快
字符 | 匹配说明 |
[\d] | 匹配任意一个数字,等同于[0123456789]中任意一个数字 |
[\w_] | 匹配任意一个字母、数字、下划线 |
[0-9] | 匹配0123456789任意一个字符,等同于[\d] |
[^\l\d_] | 匹配除小写字母、数字、下划线外任意一个字符 |
io.open()
str = "abcd123465_AFDA"
io.print(string.match(str,"[\a\d]"))//显示a
io.print(string.match(str,"[\w_]"))//显示a
io.print(string.match(str,"[0-9]"))//显示1
io.print(string.match(str,"[^\l\d_]"))//显示A
io.print("=====================")
//用string.gmatch函数遍历一个字符串内所有匹配模式的子串
for m in string.gmatch( str,"[\w_]") {
io.print(m)//显示abcd123465_AFDA
}
io.open()
str = "abcd123465_AFDA"
io.print(string.match(str,"<\aA-Z>"))//显示AF
io.open()
str = "abcd123465fAFDA"
io.print(string.match(str,"<[a-z0-9]>"))//显示a
io.open();//打开控制台
str = "helloworld"
pattern = {"<^hello>";"<^world>";"<^elloe>"}
for(i=1;#pattern;1){
for m in string.gmatch( str,pattern[ i ] ) {
io.print(pattern[ i ]+"匹配",m)
}
}
联系客服