亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發(fā) > 綜合 > 正文

Lua中的string庫和強大的模式匹配學習筆記

2024-07-21 23:04:40
字體:
來源:轉載
供稿:網(wǎng)友

lua原生解釋器對字符串的處理能力是十分有限的,強大的字符串操作能力來自于string庫。lua的string函數(shù)導出在string module中。在lua5.1,同時也作為string類型的成員方法,因此,我們既可以寫成string.upper(s), 也可以s:upper(),選擇你喜歡的寫法。

string.len(s)返回s的長度。
string.rep(s, n)返回重復s字符串n次的字符串。
string.lower(s)返回一份已將大寫轉成小寫的字符串s的拷貝
lower,upper都是使用本地字符集的,另外,如果你想對一個string數(shù)組進行排序,并不區(qū)分大小寫,你可能像這么寫:

復制代碼 代碼如下:

table.sort(a, function(a, b)
     return string.lower(a) < string.lower(b)
end)

string.sub(s, i, j)將從s提取一段字符串,從i到j(閉區(qū)間[i, j]),當然你可以使用負索引值,將從字符串尾部算起,-1是最后一個字符,-2是倒數(shù)第二,等等,這么做的好處是當我們要提取直到末尾幾個字符時,從后面數(shù)起就很方便。例如:
復制代碼 代碼如下:

s = "[hello,world]"
print(string.sub(s, 2, -2)) --> hello,world

記住,lua中的字符串是不可變的。

 

string.char, string.byte用于轉換字符和對于的數(shù)字之間值。例如:

復制代碼 代碼如下:

i = 97
print(string.char(i, i+1, i+2)) --> abc
print(string.byte("abc"))       --> 97
print(string.byte("abc"), -2)   --> 98

 

lua5.1 string.byte可以接受第三個參數(shù),返回i,j之間的多個值。例如,這么寫將字符串轉成字符值數(shù)組:

復制代碼 代碼如下:

t = {s.byte(1, -1}

要想重新轉成字符串的話:
復制代碼 代碼如下:

string.char(unpack(t))

 

string.format是強大字符串格式化函數(shù),和c語言的printf類似,這里不累述。

lua string庫里最強大的函數(shù)是那些模式匹配函數(shù):find, match, gsub, gmatch。和其他腳本語言不同,lua既沒有用POSIX的正則表達式,也沒有用perl的正則表達式。原因是實現(xiàn)這些導致lua占用更多內存,而lua的初衷是小巧的,嵌入應用的語言。 lua用少于500行的代碼實現(xiàn)了自己的一套模式匹配,雖然不如標準的正則表達式強(一般需要4000以上代碼),但也足夠強大。

string.find將查找目標模板在給定字符串中出現(xiàn)的位置,找到返回起始和結束位置,沒找到返回nil。例如:

復制代碼 代碼如下:

s = "hello,world"
i, j = string.find(s, "hello")
print(string.sub(s, i, j))

當然,string.find還可以給定起始搜索位置,當你想找出所有出現(xiàn)的位置時,這個參數(shù)就很有用,例如想知道換行符出現(xiàn)在那些地方:
復制代碼 代碼如下:

local t = {}
local i = 0
while true do
     i = string.find(s, "/n", i+1)
     if i == nil then break end
     t[#t+1] = i
end

 

string.match和string.find類似,都是在指定的string中查找相應的模式。不同的是,他返回的是找到的那部分string:

復制代碼 代碼如下:

print(string.match("hello,world","hello")) --> hello

對于像"hello"這樣的固定模式來說,這個函數(shù)就沒啥意義了。但是對于可變模式來說,就顯示出他的強大威力了:
復制代碼 代碼如下:

date = "now is 2014/10/6 17:58"
d = string.match(date, "%d+/%d+/%d+")
print(d)   --> 2014/10/6

string.gsub有三個參數(shù),給定字符串,匹配模式和替代字符串。作用就是將所有符合匹配模式的地方都替換成替代字符串。并返回替換后的字符串,以及替換次數(shù)。
復制代碼 代碼如下:

s = string.gsub("Lua is cute", "cute", "great")
print(s) --> Lua is great

string.gmatch函數(shù)將返回一個迭代器,用于迭代所有出現(xiàn)在給定字符串中的匹配字符串。

 

模式:

字符類:(character classes)

復制代碼 代碼如下:

. all characters
%a letters
%c control characters
%d digits
%l lower -case letters
%p punctuation characters
%s space characters
%u upper-case letters
%w alphanumeric characters
%x hexadecimal digits
%z the character whose representation is 0

他們的大寫版本是他本身的互補。
魔法字符:
復制代碼 代碼如下:

( ) . % + - * ? [ ] ^ $

用%進行轉義。'%%'代表'%'

 

字符集(char -set ):使用字符集可以自定義字符類。

1.不同的字符類,和單字符之間用[]
[%w_]匹配字母數(shù)字字符和下劃線。
[01]匹配二進制數(shù)
2.要想字符集內包含字符區(qū)間,起止之間加上-
[0-9] 相當于 %d
[0-9a-fA-F]相當于 %x
3.如果想得到該字符集的互補,前面加上^
[^0-7] 任何非八進制數(shù)字

重復或可選修飾符

復制代碼 代碼如下:

+ 1 or more repetitions,匹配最長的,
* 0 or more repetitions  最長的
- also 0 or more repetitions 最短的
? optional (0 or 1 occurrence)

 

捕獲

捕獲機制允許一個模式串中的一部分來匹配目標串種的一部分。寫法是模式串中你需要捕獲的那部分用()括起來,例如:

復制代碼 代碼如下:

pair = "name = anna"
key, value = string.match(pair, "(%a+)%s*=%s*(%a+)")
print(key, value) --> name anna

我們也可以將捕獲用于模式串自身,"([/"'])(.-)%1",這里的%1表示匹配第一個捕獲的一份拷貝。

 

替換

前面已知道,string.gsub的參數(shù)可以是string,其實,也可以是個函數(shù),或是table,如果是函數(shù),就會用捕獲的內容作為參數(shù)調用該函數(shù),將返回的內容作為替換字符串。如果是table,則用捕獲的內容為key去取table的值來作為替換字符串,如果不存在,就不做替換。如:

復制代碼 代碼如下:

function expand(s)
     return string.gsub(s, "$(%w+)", _G)
end
name = "Lua"; status = "great"
print(expand("$name is $status, isn't it?"))

(完)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产毛片视频网站| 夜夜躁狠狠躁日日躁婷婷小说| 国产高清自拍一区| 国产精品久久三| 日本一级二级视频| 日韩黄色一级片| 91视频久色| 久久久久亚洲av无码专区| 国产精品网站在线观看| 经典三级一区二区| 成人信息集中地| 国产精品后入内射日本在线观看| 国产嫩草影院久久久久| 日本一区二区不卡高清更新| 欧美成人精品在线| 成人激情电影一区二区| 亚洲av无码乱码国产麻豆| 日韩大尺度在线观看| 99re免费99re在线视频手机版| 日韩中文字幕视频在线观看| 日本大胆欧美人术艺术动态| 高清成人在线观看| 在线黄色免费观看| 综合精品一区| 久久久久国色av免费观看性色| 国产 中文 字幕 日韩 在线| 日韩中文字幕亚洲一区二区va在线| 97人妻一区二区精品视频| 亚洲大片精品永久免费| 国产精品网站免费| 欧美午夜精品理论片| 2025国产精品视频| 亚洲国产精华液网站w| 日韩精品乱码久久久久久| 日本亚洲欧洲无免费码在线| 欧美1区免费| 国产九九精品视频| 欧美又黄又嫩大片a级| 日韩精品中文字幕有码专区| 亚洲欧美视频在线观看| 亚洲性无码av在线| 久久精品视频一区二区| 成人区一区二区| 国产福利片在线观看| 91精品国产综合久久蜜臀| 欧美国产日韩一区| a√天堂在线观看| 欧美高清另类hdvideosexjaⅴ| 在线观看一区二区三区三州| 国产精品久久久久国产精品日日| www在线观看免费| 懂色av蜜臀av粉嫩av分享吧最新章节| 蜜桃视频久久一区免费观看入口| 午夜一区二区视频| 亚洲一区二区影院| 激情小说图片视频| 国产在线观看你懂的| 99在线免费视频观看| 成人免费网址| 日韩精品一区二区三区老鸭窝| 婷婷色在线资源| 7799国产精品久久久久99| 日韩av不卡播放| 国产精品v亚洲精品v日韩精品| 91丝袜高跟美女视频| sdde在线播放一区二区| 欧美日韩在线精品一区二区三区激情综合| 中文乱码字幕高清在线观看| 免费网站看黄yyy222| 一区二区中文视频| 午夜在线小视频| 另类天堂av| 国产天堂视频| a级片在线免费观看| 欧美日日夜夜| 一个人看的www视频免费观看| av日韩亚洲| 日本欧美久久久久免费播放网| 免费成年网站| 欧美美乳视频| 91麻豆蜜桃一区二区三区| 在线播放国产区| 国产成人艳妇aa视频在线| 国产69精品久久久久孕妇| 日韩亚洲视频| 亚洲中国最大av网站| 91精品国产91久久久久久最新| 黄色免费大片| 午夜影视日本亚洲欧洲精品| 欧美国产日产图区| 国产亚洲福利| 天天干天天操天天做| 欧美日韩国产综合在线| 免费观看在线午夜影视| 免费一区二区三区在线观看| 天堂v在线视频| 一区二区三区在线免费视频| 国产永久在线观看| 日韩性xxx| 白浆在线视频| 久久精品中文字幕一区| 国产精品99久久久久| 欧亚乱熟女一区二区在线| 你懂的免费视频| 欧美在线视频一区二区| 国产麻花豆剧传媒精品mv在线| 日韩免费视频线观看| 精品日本一区二区三区在线观看| 久久精品国产**网站演员| 日韩av免费大片| 久久av高潮av| 麻豆精品视频在线观看视频| 国产午夜精品免费一区二区三区| 欧美三级免费观看| 免费在线看黄网站| 国产亚洲精品精品精品| 免费观看精品视频| 欧美日韩加勒比精品一区| 欧美激情精品久久久久久蜜臀| 欧美在线免费观看视频| 日本学生初尝黑人巨免费视频| 久久久爽爽爽美女图片| 亚洲激情国产精品| 国产区卡一卡二卡三乱码免费| 亚洲高清黄色| 日韩一区日韩二区| 中文字幕一二三区在线观看| 午夜一区二区三区免费| 六月丁香婷婷综合| 美女扒开腿让男人桶爽久久动漫| 亚洲色图偷拍自拍| 精品久久香蕉国产线看观看亚洲| 亚洲成人在线视频网站| 欧美成人免费在线观看| 男人通一通女人的下水道| 不卡中文字幕在线| 亚洲成人精品一区| 啊啊啊一区二区| 国产精品88久久久久久| 超碰97免费观看| 午夜精品久久久久久久久| 亚洲av片一区二区三区| 国产色一区二区| 日本电影亚洲天堂一区| 老司机午夜精品视频在线观看| 成人国产一区二区三区精品| www在线观看播放免费视频日本| 欧美精选一区| 高清中文字幕一区二区三区| 色综合久久88色综合天天看泰| 国产午夜精品福利| 555www色欧美视频| 欧美~级网站不卡| 韩日精品视频一区| 国产精品久久久久久久小唯西川| 欧美在线播放| 日韩免费一区二区三区| 无码一区二区精品| 欧美中文字幕视频在线观看| 亚州一区二区| 日韩动漫在线观看| 999久久久久久| 97视频在线免费| 亚洲香蕉视频| 久久精品99国产国产精| 麻豆精品在线看| 午夜剧场免费在线观看| 青草综合视频| 天堂俺去俺来也www久久婷婷| 亚洲人成人无码网www国产| 成人看片爽爽爽| 国产黄色片在线播放| 中文字幕一区二区三区四区五区六区| 亚洲资源在线观看| 激情婷婷欧美| 六月丁香婷婷久久| 欧美另类xxx| 亚洲欧美va天堂人熟伦| 国产香蕉尹人视频在线| 一本一道无码中文字幕精品热| 久久精品国产亚洲av久| 国产亚洲欧美精品久久久www| 在线观看免费高清视频| 久草免费福利视频| 在线观看91精品国产入口| 欧美怡红院视频一区二区三区| 亚洲免费在线观看视频| 欧美激情性爽国产精品17p| 欧美韩国日本在线| 正在播放亚洲精品| 丁香色欲久久久久久综合网| 久久久久久久久久久91| 国产免费一区二区三区四区五区| 天天射天天综合网| 麻豆影视在线播放| 99视频精品视频高清免费| 国产一区二区三区在线视频观看| 黄色大片免费看| 日韩中文字幕av| 不卡一区二区中文字幕| 午夜国产福利在线观看| 在线观看日韩av先锋影音电影院| 999久久久91| 日本激情免费| 中文乱码免费一区二区| 在线免费看黄视频| 91在线观看视频| www.66久久| 国产成人小视频在线观看| 成人国产电影在线观看| caoporn超碰国产公开| 中文字幕a级片| 亚洲图区在线| 亚洲一区二区三区综合| 激情久久一区二区| 少妇一级淫免费放| 91麻豆精品国产91久久综合| 先锋影音亚洲资源| 日本久久久久久久久久久| 日韩免费影院| 欧洲精品久久| 欧洲vs亚洲vs国产| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品人成在线观看免费| 精品国产乱码一区二区三| 日本中文字幕免费| 久久久久久国产精品免费免费| 麻豆一区二区99久久久久| 久久综合资源网| av三级影院| 91久久精品国产91久久性色| 爽爽爽爽爽爽爽成人免费观看| julia一区二区中文久久94| 九九视频直播综合网| 日本不卡网站| 无码国产精品一区二区色情男同| 四虎影视2018在线播放alocalhost| 欧美黑人3p| 国产高清亚洲| 免费av观看网址| 97精品国产97久久久久久春色| 国产成人无码www免费视频播放| 久久国产精品99久久人人澡| 中文字幕在线一| 欧美人与牲动交xxxxbbbb| 美女少妇精品视频| 樱花草涩涩www在线播放| 国内外成人免费在线视频| 国产亚洲午夜高清国产拍精品| 精品久久久久亚洲| 亚洲成年人视频| 在线亚洲欧美视频| 国产精品一区二区黑人巨大| 国产成人亚洲精品无码h在线| 国产精品国产三级国产a| 怡红院精品视频| 欧美三级午夜理伦三级小说| 欧美日韩在线观看视频| 涩爱av在线播放一区二区| 伊人夜夜躁av伊人久久| 国产精欧美一区二区三区| 影音先锋中文字幕在线播放| 老汉av免费一区二区三区| 久久精品99久久无色码中文字幕| 国产毛片aaa| 精品国产免费久久久久久婷婷| 日日夜夜精品网站| 精品久久久无码中文字幕| 久久久亚洲欧洲日产国码aⅴ| 婷婷综合影院| 三级全黄视频| 一本大道av一区二区在线播放| 午夜伦全在线观看| 亚洲欧美日本在线观看| 中文字幕在线播放一区| 中文视频一区视频二区视频三区| 欧美色视频在线| 国产精品露脸自拍| 直接在线观看的三级网址| 亚洲熟妇av日韩熟妇在线| 成人激情电影在线看| 手机看片福利盒子久久| 狠狠色丁香久久婷婷综| 国产不卡在线观看| 中文字幕伦av一区二区邻居| 日日摸夜夜添夜夜添国产精品| 成人在线播放网址| 国产suv精品一区二区68| eeuss中文| 国产成人久久久久| 免费看美女毛片| 久久久久久久久久久一区| 国精产品一区一区三区免费视频| 在线电影欧美日韩一区二区私密| 亚洲国产综合自拍| 国产欧美日韩综合精品一区二区三区| 一区二区动漫| 亚洲成年人专区| 久久99精品国产自在现线小黄鸭| 国产精品天天摸av网| 黄网站app在线观看大全免费视频| 女生裸体免费视频| 日韩免费观看高清完整版在线观看| 日韩欧美高清dvd碟片| 一区二区三区美女视频| 欧美亚洲一区二区三区| 少妇一级淫免费观看| 欧美在线视频一区二区| 337p日本| 青青青视频在线| 成人自拍视频网| 国产精品视频在线观看| 涩涩视频在线观看免费| 日韩综合网站| 性做久久久久久久免费看| 一级女性全黄久久生活片免费| 国产欧美日韩另类一区| 激情小视频在线观看| 久久一区视频| 亚洲精品中文字幕乱码| 香蕉视频在线观看黄| 日韩精品免费视频| 中文字幕在线高清| 久久久久伊人| 国产欧美日韩视频一区二区三区| 久久视频中文字幕| 91精品国产乱码久久久久久| 手机精品视频在线观看|