string.match(str, pattern)
func = string.gmatch(str, pattern)
io.open()
結(jié)果 = string.match("abcd","abc")
io.print( 結(jié)果 )//顯示abc
io.open()
結(jié)果 = string.match("abcd1234567890","123456789")
io.print( 結(jié)果 )//顯示123456789
特定字符 | 匹 配 | 示 例 |
\d | 任意一個 數(shù)字,0~9任意一個數(shù)字 | ”\d\d“模式匹配字符串”abc123時,匹配結(jié)果12 |
\w | 任意一個字母、數(shù)字、也就是A~Z,a~z,0~9 中任意一個(不匹配下劃線,與正則區(qū)別) | “\w”模式匹配字符串“aa100時,匹配結(jié)果a |
\s | 空白符,包括空格、制表符、換行、換頁符其中任意一個 空格(' ')、制表符 ('\t')、回車('\r')、換行('\n')、垂直定位字符('\v')或翻頁('\f') | "\d\s"模式匹配字符串”aa 23 65“時,匹配結(jié)果3 |
\D | \d取反,非數(shù)字 | "\D\D\D\D"模式匹配字符串"dadj1323DDa"時,匹配結(jié)果是dadj |
\W | \w取反,非字母、數(shù)字、下劃線 | "\W\W"模式匹配字符串"dadj,!23DDa"時,匹配結(jié)果是,! |
\S | \s取反,非空白符 | "\S"模式匹配字符串'\ndadj,!23DDa'時,匹配結(jié)果是d(在快手字符串單引號’支持轉(zhuǎn)義符) |
字符 | 匹配 | 字符 | 匹配 |
\a | 任意一個大小寫字母,也即是A-Z,a-z | \A | \a 取反,任意一個非字母的字符,含數(shù)字、符號、空白符中一個 |
\l | 任意一個小寫字母,也即是a-z中的一個 | \L | \l 取反,任意一個非小寫字母的字符 |
\u | 任意一個大寫字母,即A-Z中的一個 | \U | \u 取反,任意一個非大寫字母的字符 |
\p | 任意一個標(biāo)點(diǎn)字符 | \P | \p 取反,任意一個非標(biāo)點(diǎn)字符的字符 |
\c | 任意一個控制字符(與空白符??) | \C | \c 取反,任意一個非控制字符的字符 |
\n | 任意一個換行符 | \N | \n 取反,任意一個非換行符 |
\r | 回車符 | \R | \r 取反,非回車符 |
\f | 換頁符 'x0c' | \F | \f 取反,非換頁符 |
\i | 是否ASCII字符( 字節(jié)碼 < 0x80 ) | \I | \i 取反,不是ASCII字符( 字節(jié)碼 >= 0x80 ) |
\x | 任意一個十六進(jìn)制數(shù)字 | \X | \x 取反,不是十六進(jìn)制數(shù)字 |
\v | 一個垂直制表符。等價于 '\x0b' | \V | \v 取反,不是垂直制表符 |
\z | \0 字節(jié)碼為0的字符,對于普通文本表示文本結(jié)束 | \Z | \z 取反,不是\0的字符 |
字符 | 匹配 | 示例 |
. | 圓點(diǎn)號,匹配任意一個單字節(jié)字符,包括換行符\n(與正則區(qū)別); 可放在尖括號<>內(nèi); 點(diǎn)號放在轉(zhuǎn)義符\.或中括號[.]內(nèi)則只匹配點(diǎn)號本身 | "..."模式匹配字符串'\nkdja,.kl',匹配結(jié)果\nkd; "\..."模式匹配字符串 '\nkdja,.kl',匹配結(jié)果.kl |
: | 冒號任意一個雙字節(jié)字符(中文字符),不適用于UNICODE編碼字符; 可放在尖括號<>內(nèi),等同<\xA1-\xF7\xA1-\xFE>匹配中文; 冒號放在轉(zhuǎn)義符\:或中括號[:]內(nèi)則只匹配冒號本身 | 見示例3 |
io.open();//打開控制臺
str = "快手真快速"
//{4}是修飾符,修飾前面表達(dá)式出現(xiàn)次數(shù)
io.print(string.match(str,".{4}") );//顯示“快手”2個中文
io.print(string.match(str,":{4}") );//顯示“快手真快”4個中文
io.print(string.match(str,":"));//顯示快
字符 | 匹配說明 |
[\d] | 匹配任意一個數(shù)字,等同于[0123456789]中任意一個數(shù)字 |
[\w_] | 匹配任意一個字母、數(shù)字、下劃線 |
[0-9] | 匹配0123456789任意一個字符,等同于[\d] |
[^\l\d_] | 匹配除小寫字母、數(shù)字、下劃線外任意一個字符 |
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函數(shù)遍歷一個字符串內(nèi)所有匹配模式的子串
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)
}
}