国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
【知識】模式匹配基礎(chǔ)篇
【知識】模式匹配基礎(chǔ)篇
一。模式匹配基本函數(shù)
1.1 string.match()
格式:
string.match(str, pattern)

第一個參數(shù)指定目標(biāo)字符串,每二個參數(shù)指定查找模式串。返回找到的一個或多個分組捕獲。

1.2 string.gmatch()
格式:
func = string.gmatch(str, pattern)

全局模式匹配io.print(type(m1)) 函數(shù)比較適合用于泛型for循環(huán)。它可以遍歷一個字符串內(nèi)所有匹配模式的子串。
調(diào)用string.gmatch函數(shù)的時候,如果不顯示的指定捕獲,函數(shù)將捕獲整個匹配模式。

二。模式匹配基本規(guī)則

2.1 模式
2.1.1 字面值(普通字符)


沒任何修飾符,即是說a表示a, b表示b,1表示1。。。字面是什么就表示什么,表達(dá)式中的普通字符在匹配一個字符串的時候,匹配與之相同的一個字符。
示例1
io.open()
結(jié)果 = string.match("abcd","abc")
io.print( 結(jié)果 )
//顯示abc

示例2
io.open()
結(jié)果 = string.match("abcd1234567890","123456789")
io.print( 結(jié)果 )
//顯示123456789

2.1.2 特定的字符(使用“\轉(zhuǎn)義符 + 特定字母字符”表示特定的字符類)

  • 常用 6個 (大寫是取反的意思)
特定字符
匹     配
示     例
\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的字符

2.1.3任意字符
字符
匹配
示例
.圓點(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

示例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,":"));//顯示快

2.1.4 自定義字符類 (用中括號[]表示)
[...] 在中括號內(nèi)列出字面值字符、特殊字符,表示匹配中括號內(nèi)字符任意一個,雖然可以是任意一個,但只能是匹配一個。

中括號支持由連字符“-”來表示一個范圍。當(dāng)“-”前后構(gòu)成范圍時,要求前面字符的碼位小于后面字符的碼位。

[^…] 排除型自定義字符類。表示任意一個未列出的字符,同樣只能是匹配一個。

如:
字符匹配說明
[\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
   
}


2.1.5 自定義字符串(用尖括號<>表示)串模式是模式匹配特有

  • <...>在尖括號內(nèi)列示字面值字符,表示匹配一組有序的字符串而不是單個字符。
例如<hello>匹配hello單詞。而不是hello其中的一個字符,類似模式"字面值"用法

  • 在串匹配的尖括號內(nèi)部也可以使用特殊字符類,其語法類似使用[]自定義字符類的用法,但匹配一串而非一個。

例如:<\aA-Z> 匹配2個字符,匹配字母及大寫字母A-Z中的一個,
io.open()
str = "abcd123465_AFDA"
io.print(string.match(str,"<\aA-Z>"))//顯示AF


  • 也可以在串匹配中插入用中括號來定義的自定義字符類,用法與[]一樣,只匹配一個
如下:<[a-z0-9]>  匹配串內(nèi) a-z小寫字母、0-9數(shù)字其中一個。
io.open()
str = "abcd123465fAFDA"
io.print(string.match(str,
"<[a-z0-9]>"))//顯示a


  • 反串配模式  在<^...>尖括號內(nèi)開頭^,表示匹配所有不是串內(nèi)的字符,匹配由左邊開始,匹配長度等長于串內(nèi)字符長度,看示例
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)
    }

}

顯示
<^hello> 匹配ellow  (由左邊開始匹配,不要hello單詞,取串內(nèi)等長字符,于是匹配ellow,后邊orld只有4個長度不匹配)
<^world>匹配 hello(由左邊開始匹配,hello符合不是world單詞條件,后面是world所以不?。?nbsp;       
<^elloe>匹配 hello world(由左邊開始,helllo不是elloe符合匹配條件,world也不是elloe也符合條件,字符長度都一樣)


  • 串匹配注意事項(xiàng)
可在串匹配內(nèi)使用'+'或'*'限定修飾符表示貪婪匹配,但是不能在尖括括號內(nèi)部使用其他修飾符,不能使用問號來定義惰性匹配,也不能使用'|'或'&'等邏輯修飾符.

不能在尖括號內(nèi)部使用圓括號來定義捕獲組.

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
正則表達(dá)式中的分組構(gòu)造 | Microsoft Learn
C# string 中的 @
Lua模式匹配
python-文本處理和正則表達(dá)式
最常用的PHP正則表達(dá)式收集整理
20分鐘內(nèi)看完這篇,閉著眼寫正則表達(dá)式
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服