在 lua 的 string 庫中的正則表達(dá)式

標(biāo)題: 在 lua 的 string 庫中的正則表達(dá)式
作者: 神夢無痕(email:smwh@vip.qq.com)
鏈接: http://www.reibang.com/p/4fdc274f3573
版權(quán): 本人所有文章歪玲,都遵守“署名-非商業(yè)性使用-相同方式共享 2.5 中國大陸”協(xié)議條款迁央。

一.前提要了解一下 lua 的string幾個(gè)方法

A、string庫中所有的字符索引從前往后是1,2,...;從后往前是-1,-2,...

B滥崩、string庫中所有的function都不會(huì)直接操作字符串岖圈,而是返回一個(gè)結(jié)果
  string.len(s):返回字符串的長度.
  string.lower(s):變小寫.
  string.upper(s):變大寫.
  string.rep(s,n):將 s 拷貝 n 份,并連接起來,返回.
  string.sub(s,i [,j]):取 s 中從 i 開始到 j 為止的自字符串.默認(rèn) j 為長度 -i 表示倒數(shù)

  • 1.string.find(s, pattern, pos)
    第1個(gè)參數(shù):源字符串
    第2個(gè)參數(shù):待搜索之模式串
    第3個(gè)參數(shù):A hint, 從 pos 位置開始搜索
    找到匹配返回:匹配串開始和結(jié)束的位置,否則返回 nil

  • 2.string.gsub(s, pattern, reps)
    string.gsub(s, pattern, func)
    第1個(gè)參數(shù):源字符串
    第2個(gè)參數(shù):待替換之模式串
    第3個(gè)參數(shù):替換為 reps
    返回 結(jié)果串 + 匹配數(shù)

--gsub也可以用拷貝捕獲技巧
print(string.gsub("hello, world", "(o)", "%1-%1")) 
--> hello-o, wo-orld    2

print(string.gsub("hello Lua", "(.)(.)", "%2%1"))
--> ehll ouLa           4


-- 注意匹配數(shù)用括號(hào)丟棄
function trim (s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end 

--string.gsub(s, pattern, func)
--第3個(gè)參數(shù):自定義函數(shù)钙皮,對找到的匹配操作蜂科,并傳出替換值
s, n = string.gsub("hello world", "l+", function(s) return "xxx" end)
--> l+一個(gè)或多個(gè)l ,所以替換了 ll  和  l  返回為2

print(s, n)
--> hexxxo worxxxd 2
  • 3.string.gfind
--返回一個(gè)迭代器,迭代器每執(zhí)行一次短条,返回下一個(gè)匹配串导匣;
iter = string.gfind("a=b c=d", "[^%s+]=[^%s+]")
print(iter()) --> a=b
print(iter()) --> c=d

--通常用于泛性for循環(huán),下面的例子結(jié)果同上
for s in string.gfind("a=b c=d", "[^%s+]=[^%s+]") do
    print(s)
end
  • 4.下面的表列出了 Lua 支持的所有字符類
 .        任意字符
%a        字母
%c        控制字符
%d        數(shù)字
%l        小寫字母
%p        標(biāo)點(diǎn)字符
%s        空白符
%u        大寫字母
%w        字母和數(shù)字
%x        十六進(jìn)制數(shù)字
%z        代表0的字符
--上面字符類的大寫形式表示小寫所代表的集合的補(bǔ)集。例如, '%A'非字母的字符: 
  • 5.模式串中的特殊字符
( ) . % + - * ? [ ^ $

'%' 用作特殊字符的轉(zhuǎn)義字符
'%.' 匹配點(diǎn)
'%%' 匹配字符 '%'茸时。轉(zhuǎn)義字符 '%'不僅可以用來轉(zhuǎn)義特殊字符逐抑,還可以用于所有的非字母的字符。當(dāng)對一個(gè)字符有疑問的時(shí)候屹蚊,為安全起見請使用轉(zhuǎn)義字符轉(zhuǎn)義他厕氨。
用'[]'創(chuàng)建字符集
  '[%w_]' 匹配字母數(shù)字和下劃線
  '[01]' 匹配二進(jìn)制數(shù)字
  '[%[%]]'匹配一對方括號(hào)
在'[]'中使用連字符'-'
  '%d' 表示 '[0-9]';
  '%x' 表示 '[0-9a-fA-F]'
  '[0-7]' 表示 '[01234567]'
在'[]'開始處使用 '^' 表示其補(bǔ)集:
  '[^0-7]' 匹配任何不是八進(jìn)制數(shù)字的字符汹粤;
  '[^\n]' 匹配任何非換行符戶的字符命斧。
  '[^%s]' == '%S'

  • 6.模式修飾符
  + 匹配前一字符1次或多次

  * 匹配前一字符0次或多次;最長匹配

  - 匹配前一字符0次或多次;最短匹配

  ? 匹配前一字符0次或1次

  ^ 匹配字符串開頭

  $ 匹配字符串結(jié)尾
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嘱兼,隨后出現(xiàn)的幾起案子国葬,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汇四,死亡現(xiàn)場離奇詭異接奈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)通孽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門序宦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人背苦,你說我怎么就攤上這事互捌。” “怎么了行剂?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵秕噪,是天一觀的道長。 經(jīng)常有香客問我厚宰,道長腌巾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任铲觉,我火速辦了婚禮澈蝙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘备燃。我一直安慰自己碉克,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布并齐。 她就那樣靜靜地躺著漏麦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪况褪。 梳的紋絲不亂的頭發(fā)上撕贞,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天,我揣著相機(jī)與錄音测垛,去河邊找鬼捏膨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛食侮,可吹牛的內(nèi)容都是我干的号涯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锯七,長吁一口氣:“原來是場噩夢啊……” “哼链快!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起眉尸,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤域蜗,失蹤者是張志新(化名)和其女友劉穎巨双,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霉祸,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筑累,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丝蹭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慢宗。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖半夷,靈堂內(nèi)的尸體忽然破棺而出婆廊,到底是詐尸還是另有隱情迅细,我是刑警寧澤巫橄,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站茵典,受9級(jí)特大地震影響湘换,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜统阿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一彩倚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扶平,春花似錦帆离、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至麻献,卻和暖如春们妥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勉吻。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工监婶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人齿桃。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓惑惶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親短纵。 傳聞我的和親對象是個(gè)殘疾皇子带污,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容