青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 311, comments - 0, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
Lua 的模式匹配不使用Posix規(guī)范的正則表達(dá)式(也寫做regexp)來進(jìn)行模式匹配。主要的原因出于程序大小方面的考慮:實(shí)現(xiàn)一個(gè)典型的符合POSIX標(biāo)準(zhǔn)的regexp大概需要4000行代碼,這比整個(gè)Lua標(biāo)準(zhǔn)庫加在一起都大。權(quán)衡之下,Lua中的模式匹配的實(shí)現(xiàn)只用了500行代碼,當(dāng)然這意味著不可能實(shí)現(xiàn)POSIX所規(guī)范的所有更能。然而,Lua中的模式匹配功能是很強(qiáng)大的,并且包含了一些使用標(biāo)準(zhǔn)POSIX模式匹配不容易實(shí)現(xiàn)的功能。

 

Lua支持的所有字符類:

. 任意字符

%a 字母

%c 控制字符

%d 數(shù)字

%l 小寫字母

%p 標(biāo)點(diǎn)字符

% s 空白符

%u 大寫字符

%w 字母和數(shù)字

%x 十六進(jìn)制數(shù)字

%z 代表0的字符

 

上面字符類的大寫形式表示小寫所代表的集合的補(bǔ)集。例如,'%A'非字母的字符:
print(string.gsub("hello, up-down!", "%A", "."))
--> hello..up.down. 4

例子:

 

s = "Deadline is 30/05/1999, firm"
date = "%d%d/%d%d/%d%d%d%d"
print(string.sub(s, string.find(s, date))) --> 30/05/1999

 

 

 

在模式匹配中有一些特殊字符,他們有特殊的意義,Lua中的特殊字符如下:

( ) . % + - * ? [ ^ $

 

'%' 用作特殊字符的轉(zhuǎn)義字符,因此 '%.' 匹配點(diǎn);'%%' 匹配字符 '%'。轉(zhuǎn)義字符 '%'不僅可以用來轉(zhuǎn)義特殊字符,還可以用于所有的非字母的字符。當(dāng)對一個(gè)字符有疑問的時(shí)候,為安全起見請使用轉(zhuǎn)義字符轉(zhuǎn)義他。

 

對Lua而言,模式串就是普通的字符串。他們和其他的字符串沒有區(qū)別,也不會(huì)受到特殊對待。只有他們被用作模式串用于函數(shù)的時(shí)候,'%' 才作為轉(zhuǎn)義字符。所以,如果你需要在一個(gè)模式串內(nèi)放置引號的話,你必須使用在其他的字符串中放置引號的方法來處理,使用 '/' 轉(zhuǎn)義引號,'/' 是Lua的轉(zhuǎn)義符。

 

你可以使用方括號將字符類或者字符括起來創(chuàng)建自己的字符類(譯者:Lua稱之為char-set,就是指傳統(tǒng)正則表達(dá)式概念中的括號表達(dá)式)。比如,'[%w_]' 將匹配字母數(shù)字和下劃線,'[01]' 匹配二進(jìn)制數(shù)字,'[%[%]]' 匹配一對方括號。

 

下面的例子統(tǒng)計(jì)文本中元音字母出現(xiàn)的次數(shù):

_, nvow = string.gsub(text, "[AEIOUaeiou]", "")

 

在char-set中可以使用范圍表示字符的集合,第一個(gè)字符和最后一個(gè)字符之間用連字符連接表示這兩個(gè)字符之間范圍內(nèi)的字符集合。大部分的常用字符范圍都已經(jīng)預(yù)定義好了,所以一般你不需要自己定義字符的集合。比如,'%d' 表示 '[0-9]';'%x' 表示 '[0-9a-fA-F]'。然而,如果你想查找八進(jìn)制數(shù),你可能更喜歡使用 '[0-7]' 而不是 '[01234567]'。你可以在字符集(char-set)的開始處使用 '^' 表示其補(bǔ)集:'[^0-7]' 匹配任何不是八進(jìn)制數(shù)字的字符;'[^/n]' 匹配任何非換行符戶的字符。記住,可以使用大寫的字符類表示其補(bǔ)集:'%S' 比 '[^%s]' 要簡短些。

 

可以使用修飾符來修飾模式增強(qiáng)模式的表達(dá)能力,Lua中的模式修飾符有四個(gè):

+ 匹配前一字符1次或多次
* 匹配前一字符0次或多次
- 匹配前一字符0次或多次
? 匹配前一字符0次或1次

 

'+',匹配一個(gè)或多個(gè)字符,總是進(jìn)行最長的匹配。比如,模式串 '%a+' 匹配一個(gè)或多個(gè)字母或者一個(gè)單詞:
print(string.gsub("one, and two; and three", "%a+", "word"))
--> word, word word; word word
'%d+' 匹配一個(gè)或多個(gè)數(shù)字(整數(shù)):
i, j = string.find("the number 1298 is even", "%d+")
print(i,j) --> 12 15
'*' 與 '+' 類似,但是他匹配一個(gè)字符0次或多次出現(xiàn).一個(gè)典型的應(yīng)用是匹配空白。

 

比如,為了匹配一對圓括號()或者括號之間的空白,可以使用 '%(%s*%)'。( '%s*' 用來匹配0個(gè)或多個(gè)空白。由于圓括號在模式中有特殊的含義,所以我們必須使用 '%' 轉(zhuǎn)義他。)再看一個(gè)例子,'[_%a][_%w]*' 匹配Lua程序中的標(biāo)示符:字母或者下劃線開頭的字母下劃線數(shù)字序列。
'-' 與 '*' 一樣,都匹配一個(gè)字符的0次或多次出現(xiàn),但是他進(jìn)行的是最短匹配。某些時(shí)候這兩個(gè)用起來沒有區(qū)別,但有些時(shí)候結(jié)果將截然不同。比如,如果你使用模式 '[_%a][_%w]-' 來查找標(biāo)示符,你將只能找到第一個(gè)字母,因?yàn)?'[_%w]-' 永遠(yuǎn)匹配空。另一方面,假定你想查找C程序中的注釋,很多人可能使用 '/%*.*%*/'(也就是說 "/*" 后面跟著任意多個(gè)字符,然后跟著 "*/" )。然而,由于 '.*' 進(jìn)行的是最長匹配,這個(gè)模式將匹配程序中第一個(gè) "/*" 和最后一個(gè) "*/" 之間所有部分:

 

test = "int x; /* x */ int y; /* y */"
print(string.gsub(test, "/%*.*%*/", "<COMMENT>"))
--> int x; <COMMENT>
然而模式 '.-' 進(jìn)行的是最短匹配,她會(huì)匹配 "/*" 開始到第一個(gè) "*/" 之前的部分:
test = "int x; /* x */ int y; /* y */"
print(string.gsub(test, "/%*.-%*/", "<COMMENT>"))
--> int x; <COMMENT> int y; <COMMENT>
'?' 匹配一個(gè)字符0次或1次。舉個(gè)例子,假定我們想在一段文本內(nèi)查找一個(gè)整數(shù),整數(shù)可能帶有正負(fù)號。模式 '[+-]?%d+' 符合我們的要求,它可以匹配像 "-12"、"23" 和 "+1009" 等數(shù)字。'[+-]' 是一個(gè)匹配 '+' 或者 '-' 的字符類;接下來的 '?' 意思是匹配前面的字符類0次或者1次。

 

與其他系統(tǒng)的模式不同的是,Lua中的修飾符不能用字符類;不能將模式分組然后使用修飾符作用這個(gè)分組。比如,沒有一個(gè)模式可以匹配一個(gè)可選的單詞(除非這個(gè)單詞只有一個(gè)字母)。下面我將看到,通常你可以使用一些高級技術(shù)繞開這個(gè)限制。
以 '^' 開頭的模式只匹配目標(biāo)串的開始部分,相似的,以 '$' 結(jié)尾的模式只匹配目標(biāo)串的結(jié)尾部分。這不僅可以用來限制你要查找的模式,還可以定位(anchor)模式。比如:
if string.find(s, "^%d") then ...
檢查字符串s是否以數(shù)字開頭,而
if string.find(s, "^[+-]?%d+$") then ...
檢查字符串s是否是一個(gè)整數(shù)。

 

'%b' 用來匹配對稱的字符。常寫為 '%bxy' ,x和y是任意兩個(gè)不同的字符;x作為匹配的開始,y作為匹配的結(jié)束。比如,'%b()' 匹配以 '(' 開始,以 ')' 結(jié)束的字符串:
print(string.gsub("a (enclosed (in) parentheses) line",
"%b()", ""))

 

--> a line
常用的這種模式有:'%b()' ,'%b[]','%b%{%}' 和 '%b<>'。你也可以使用任何字符作為分隔符。

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久国产精品www| 久久久国产视频91| 海角社区69精品视频| 国产欧美日韩免费| 国产日韩欧美日韩大片| 国产欧美一区二区三区久久人妖| 欧美日韩三区| 国产日韩欧美亚洲| 亚洲国产欧美一区二区三区同亚洲| 亚洲人体1000| 国产精品羞羞答答xxdd| 亚洲高清久久| 狠久久av成人天堂| 99国产精品久久久久久久成人热| 亚洲午夜激情| 亚洲精品国产精品乱码不99按摩| 欧美电影免费观看| 欧美一级欧美一级在线播放| 99国产精品久久久久久久| 欧美一区二区三区在线观看视频 | 国产欧美一区二区精品仙草咪| 国产精品久久九九| 国产精品美女一区二区在线观看| 永久免费视频成人| 亚洲调教视频在线观看| 亚洲精品影视在线观看| 一区二区日本视频| 久久亚洲捆绑美女| 亚洲天堂久久| 欧美激情精品久久久久久黑人| 国产精品视频xxxx| 久久精品国产亚洲一区二区三区| 免费高清在线视频一区·| 免费在线日韩av| 麻豆精品一区二区综合av| 免费看亚洲片| 久久久水蜜桃| 国产在线视频欧美| 欧美影院成人| 欧美福利电影在线观看| 在线精品高清中文字幕| 久久美女艺术照精彩视频福利播放| 在线视频欧美日韩| 久久蜜桃资源一区二区老牛 | 麻豆乱码国产一区二区三区| 亚洲一区二区在线免费观看| 欧美欧美天天天天操| 99国产精品视频免费观看一公开| 亚洲人久久久| 欧美日韩一区二区三区高清| 欧美成人在线免费视频| 午夜在线一区二区| 国产伦精品一区二区三区照片91| 亚洲图片欧美一区| 亚洲私人影院在线观看| 国产精品亚洲综合色区韩国| 久久久久.com| 久久天天综合| 99精品久久久| 亚洲一区二区黄色| 韩国av一区二区三区四区| 欧美国产日韩精品免费观看| 欧美另类99xxxxx| 亚洲在线视频观看| 久久国产精品久久久久久久久久| 亚洲成人在线观看视频| 亚洲精一区二区三区| 国产日韩欧美电影在线观看| 欧美成人高清| 欧美日韩中文字幕| 久久国产精品毛片| 欧美.www| 午夜精品免费| 久久婷婷国产麻豆91天堂| 在线视频免费在线观看一区二区| 亚洲欧美日韩国产一区| 亚洲大片在线观看| 日韩一级在线观看| 樱桃视频在线观看一区| 99精品热视频| 一区二区三区在线观看国产| 亚洲精选在线观看| 亚洲精品免费电影| 亚洲尤物精选| 亚洲欧美韩国| 欧美午夜性色大片在线观看| 欧美高清视频| 黄色成人在线免费| 久久精品一本| 性久久久久久久久久久久| 亚洲国产日韩一区| 亚洲伊人网站| 日韩一级免费| 久久免费少妇高潮久久精品99| 一区二区三区免费观看| 久久人人九九| 欧美一区二区在线免费播放| 欧美日本一区| 欧美成人精品1314www| 国产精品一页| 一区二区三区四区五区精品视频| 亚洲福利视频二区| 午夜一级在线看亚洲| 一区二区三区四区国产| 欧美成人福利视频| 老司机精品视频网站| 国产日韩欧美一区| 亚洲午夜一区二区| 亚洲一区二区三区视频播放| 欧美国产日韩xxxxx| 免费h精品视频在线播放| 国产视频一区二区三区在线观看| 宅男精品导航| 亚洲一区二区三区视频| 欧美日韩一区二区三区免费看| 亚洲福利在线看| 亚洲国产高清一区二区三区| 久久香蕉国产线看观看网| 久久精品在线观看| 国产亚洲欧美日韩日本| 亚洲一区影院| 欧美一二三区在线观看| 欧美午夜www高清视频| 99视频一区二区| 亚洲精品资源美女情侣酒店| 欧美视频国产精品| 欧美日韩日本国产亚洲在线| 久久久久久午夜| 亚洲一级网站| 在线视频免费在线观看一区二区| 亚洲电影第三页| 久久精品视频免费观看| 欧美一区综合| 在线一区欧美| 欧美日韩四区| 一区二区三区四区国产| 亚洲欧美日韩精品综合在线观看 | 欧美电影电视剧在线观看| 老司机aⅴ在线精品导航| 黑丝一区二区| 久久最新视频| 亚洲欧洲另类| 亚洲午夜精品国产| 国产精品一区二区三区成人| 欧美在线观看视频一区二区| 欧美成人国产一区二区| 99精品久久久| 国产精品久久一级| 欧美在线免费视频| 亚洲综合社区| 一区二区在线视频播放| 欧美成人精品三级在线观看| 日韩视频在线一区二区三区| 亚洲天堂免费观看| 国产深夜精品福利| 美女在线一区二区| 一本色道久久综合亚洲精品不卡 | 久久久蜜臀国产一区二区| 欧美国产日本在线| 亚洲综合精品一区二区| 国色天香一区二区| 欧美国产一区二区在线观看 | 在线视频亚洲| 国产一区清纯| 影音先锋久久资源网| 国产精品99久久久久久久vr | 日韩午夜在线电影| 亚洲资源av| 久久综合五月天婷婷伊人| 亚洲久久成人| 久久亚洲精品欧美| 亚洲经典在线看| 亚洲欧美日韩中文在线制服| 国产精品久久国产三级国电话系列 | 欧美呦呦网站| 亚洲精选一区二区| 国产偷国产偷亚洲高清97cao| 免费日韩av| 久久国产乱子精品免费女| 亚洲精品在线视频观看| 免费在线观看日韩欧美| 欧美在线观看视频一区二区三区| 亚洲伦伦在线| 在线日韩av永久免费观看| 国产日韩欧美二区| 欧美日韩四区| 美女精品自拍一二三四| 欧美一区成人| 亚洲综合精品自拍| 一本色道久久综合亚洲精品高清| 欧美激情中文不卡| 黄网站免费久久| 免费h精品视频在线播放| 午夜欧美视频| 中日韩高清电影网| 亚洲精品一级| 欧美激情亚洲国产| 久久全球大尺度高清视频| 欧美亚洲午夜视频在线观看| 亚洲深夜影院|