校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Lua中的string庫和強大的模式匹配學習筆記

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

熱門標簽:漳州智云呼電話機器人 個人怎么在地圖標注需要的店鋪 清朝地圖標注哈爾濱 武漢外呼防封系統多少錢 新岸線智能電銷機器人 地圖標注大廈 怎么去除地圖標注 冀州市地圖標注 百度地圖標注早餐區域

lua原生解釋器對字符串的處理能力是十分有限的,強大的字符串操作能力來自于string庫。lua的string函數導出在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數組進行排序,并不區分大小寫,你可能像這么寫:

復制代碼 代碼如下:

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

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

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

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

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

復制代碼 代碼如下:

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可以接受第三個參數,返回i,j之間的多個值。例如,這么寫將字符串轉成字符值數組:

復制代碼 代碼如下:

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

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

string.char(unpack(t))

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

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

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

復制代碼 代碼如下:

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

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

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"這樣的固定模式來說,這個函數就沒啥意義了。但是對于可變模式來說,就顯示出他的強大威力了:
復制代碼 代碼如下:

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

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

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

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

模式:

字符類:(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_]匹配字母數字字符和下劃線。
[01]匹配二進制數
2.要想字符集內包含字符區間,起止之間加上-
[0-9] 相當于 %d
[0-9a-fA-F]相當于 %x
3.如果想得到該字符集的互補,前面加上^
[^0-7] 任何非八進制數字

重復或可選修飾符

復制代碼 代碼如下:

+ 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的參數可以是string,其實,也可以是個函數,或是table,如果是函數,就會用捕獲的內容作為參數調用該函數,將返回的內容作為替換字符串。如果是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?"))

(完)

您可能感興趣的文章:
  • Lua中string.len()使用指南
  • Lua loadstring函數用法實例
  • Lua中的loadfile、dofile、loadstring、require用法實例
  • Lua字符串庫(string庫)學習筆記
  • LUA string庫使用小結
  • Lua中的string庫(字符串函數庫)總結
  • Lua中實現StringBuffer功能
  • Lua中字符串(string)淺析
  • Lua中string.lower()使用指南

標簽:儋州 宣城 德宏 天門 濰坊 金昌 天門 臺灣

巨人網絡通訊聲明:本文標題《Lua中的string庫和強大的模式匹配學習筆記》,本文關鍵詞  Lua,中的,string,庫,和,強,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua中的string庫和強大的模式匹配學習筆記》相關的同類信息!
  • 本頁收集關于Lua中的string庫和強大的模式匹配學習筆記的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲精品一区二区三区在线观看| 懂色av噜噜一区二区三区av| 国产精品久久久久久久久搜平片| 中文字幕一区二| 一区二区三区久久| 日韩精品免费视频人成| 国产综合久久久久久鬼色 | 精品亚洲国产成人av制服丝袜| 美腿丝袜亚洲一区| 狠狠狠色丁香婷婷综合激情| 成人国产精品免费观看动漫| caoporm超碰国产精品| 不卡在线观看av| 日韩免费观看2025年上映的电影| 亚洲欧洲精品成人久久奇米网| 亚洲成人黄色小说| 91麻豆国产精品久久| 精品国产一区二区三区久久久蜜月| 欧美国产日本韩| 国产在线视频一区二区| 欧美日韩一区中文字幕| 亚洲手机成人高清视频| 大白屁股一区二区视频| 欧美电视剧免费观看| 久久99精品久久久久久动态图 | 亚洲精品午夜久久久| 国产ts人妖一区二区| 久久免费精品国产久精品久久久久 | 成人app在线| 日韩理论片一区二区| 91啦中文在线观看| 亚洲大片精品永久免费| 欧美视频完全免费看| 午夜av区久久| 日韩欧美一二区| 国产麻豆视频一区| 18欧美亚洲精品| 91女厕偷拍女厕偷拍高清| 亚洲色图.com| 6080午夜不卡| 国产69精品久久99不卡| 亚洲精品乱码久久久久久久久| 色999日韩国产欧美一区二区| 亚洲不卡一区二区三区| 久久婷婷久久一区二区三区| 91片黄在线观看| 国内精品国产成人| 亚洲国产综合色| 久久九九99视频| 精品视频一区二区三区免费| 国产精品一区二区在线观看不卡 | 欧美日韩国产欧美日美国产精品| 麻豆成人在线观看| 午夜av一区二区三区| 国产欧美日本一区视频| 日韩欧美的一区| 欧美三级蜜桃2在线观看| 成人性生交大片免费看中文| 韩国av一区二区三区| 首页亚洲欧美制服丝腿| 亚洲综合无码一区二区| 亚洲精品少妇30p| 最新日韩在线视频| 亚洲视频一区二区在线| 欧美激情一区二区| 欧美国产综合色视频| 国产精品色在线观看| 国产精品国产自产拍在线| 久久香蕉国产线看观看99| 久久精品人人做人人爽人人| 国产丝袜欧美中文另类| 中文字幕亚洲精品在线观看| 国产精品你懂的在线欣赏| 国产精品盗摄一区二区三区| 国产欧美综合在线| 亚洲欧美一区二区视频| 亚洲精品五月天| 美女视频一区二区| 国产精品资源在线观看| 色综合一个色综合| 91精品国产91综合久久蜜臀| 精品久久一区二区三区| 成人免费在线视频观看| 亚洲h在线观看| 成人黄色在线视频| 精品视频1区2区| 国产精品美女www爽爽爽| 亚洲午夜羞羞片| heyzo一本久久综合| 日韩一级成人av| 亚洲精品国产精品乱码不99| 久久电影网电视剧免费观看| 亚洲精品一区二区三区99| 国产婷婷色一区二区三区在线| 亚洲精品国产一区二区三区四区在线| 美女视频黄频大全不卡视频在线播放| 国产一区二区三区黄视频| 制服丝袜中文字幕一区| 亚洲九九爱视频| 91香蕉视频污| 国产精品久久久久影院色老大 | 日韩国产一二三区| 色狠狠桃花综合| 亚洲愉拍自拍另类高清精品| 福利一区福利二区| 中文字幕日韩一区| 99精品国产一区二区三区不卡| 久久久.com| 风间由美性色一区二区三区| 国产蜜臀av在线一区二区三区| 国产激情精品久久久第一区二区| 久久久久久久久伊人| 成人精品亚洲人成在线| 亚洲日本在线看| 欧美最猛性xxxxx直播| 天堂成人免费av电影一区| 欧美日韩免费观看一区二区三区| 亚洲男人的天堂在线观看| 欧美午夜不卡在线观看免费| 性做久久久久久免费观看 | 亚洲一二三区在线观看| 日韩一区二区免费电影| 高清av一区二区| 亚洲chinese男男1069| 精品久久99ma| 欧美视频在线观看一区| 国产原创一区二区| 18涩涩午夜精品.www| 欧美一个色资源| 色综合av在线| 国产精品中文字幕一区二区三区| 亚洲欧洲精品一区二区三区不卡| 欧美性大战久久久久久久| 成人99免费视频| 丁香激情综合国产| 久久福利视频一区二区| 亚洲国产综合视频在线观看| 国产精品激情偷乱一区二区∴| 日韩欧美国产综合一区| 91精品国产一区二区人妖| 欧美亚洲日本一区| 色999日韩国产欧美一区二区| 成人国产精品免费| 国产成人一区在线| 国产一区二区三区高清播放| 蜜乳av一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩va欧美va亚洲va久久| 亚洲伊人色欲综合网| 天天操天天干天天综合网| av在线综合网| 波多野结衣欧美| 99久久精品免费看国产免费软件| 成人国产精品免费观看视频| 99免费精品在线| 欧美肥妇毛茸茸| 日韩午夜激情电影| 国产精品国产三级国产a | 欧美日韩极品在线观看一区| 在线亚洲一区二区| 精品少妇一区二区三区在线播放 | 国产精品电影一区二区| 亚洲午夜精品在线| 国产一区欧美日韩| 91高清视频免费看| 精品理论电影在线| 夜夜精品浪潮av一区二区三区| 青青草原综合久久大伊人精品| 成人黄色av电影| 日韩精品一区二区三区中文精品| 亚洲视频小说图片| 国产精品一区二区三区乱码| 欧美在线观看视频一区二区三区| 日韩欧美亚洲一区二区| 午夜精品久久久久久久| 一本一道综合狠狠老| 亚洲视频在线观看三级| 国产成a人亚洲精| 久久综合九色综合97婷婷女人 | 亚洲精品成a人| 99久久精品费精品国产一区二区| 久久久夜色精品亚洲| 久久精品国产免费| 日韩精品一区二区三区三区免费| 午夜国产精品一区| 欧美日本乱大交xxxxx| 一区二区三区91| 69av一区二区三区| 奇米在线7777在线精品 | 欧美日韩精品一区二区在线播放 | av一区二区三区黑人| 国产调教视频一区| 97se狠狠狠综合亚洲狠狠| 中文av字幕一区| 欧美性猛交xxxxxxxx| 亚洲第一激情av| 国产欧美日韩在线视频| 91福利在线观看| 国产成人精品免费在线| 综合久久久久综合|