Lua string.match()

字符匹配.jpg

前言#

今天我們?cè)僖黄鹂匆粋€(gè)string家族的匹配函數(shù),它不同于函數(shù)string.find()要返回匹配字符的索引,也不同于string.gmatch()函數(shù)會(huì)返回一個(gè)迭代函數(shù)可以取到所有的匹配項(xiàng),這個(gè)函數(shù)它僅僅范回第一個(gè)匹配,簡(jiǎn)單易用,往往在一些實(shí)際應(yīng)用中找到第一個(gè)匹配就夠了,我們一起來(lái)看一下用法。


string.match()##

  • 原型:string.match(s, pattern [, init])
  • 解釋:在字符串s中查找滿足參數(shù)pattern的匹配子串,如果找到了一個(gè)匹配就返回這個(gè)匹配子串,若沒(méi)找到則返回nil,如果參數(shù)pattern沒(méi)有指定匹配參數(shù),則返回整個(gè)匹配字符串——"If pattern specifies no captures, then the whole match is returned."(這一句我翻譯的不太靠譜啊,有問(wèn)題麻煩大家給我指正一下),另外,一個(gè)數(shù)字形參數(shù)init用來(lái)指定查找字符串的其實(shí)位置,這個(gè)參數(shù)默認(rèn)為1,當(dāng)然也可以設(shè)置為負(fù)數(shù),即-n表示從字符串尾部向前數(shù)n個(gè)字符開(kāi)始查找。

Usage##

  • 首先新建一個(gè)文件將文件命名為matchtest.lua然后編寫(xiě)如下代碼:
local sourcestr = "ehre99wj=--=-*-/4mdqwl\0ds123fef"
print("\nsourcestr = "..sourcestr)

local match_ret = string.match(sourcestr, "%d%d%d")
print("\nmatch_ret is "..match_ret)

match_ret = string.match(sourcestr, "%d%a%a")
print("\nmatch_ret is "..match_ret)

match_ret = string.match(sourcestr, "")
print("\nmatch_ret is "..match_ret)

match_ret = string.match(sourcestr, "%d%d")
print("\nmatch_ret is "..match_ret)

match_ret = string.match(sourcestr, "%d%d", 10)
print("\nmatch_ret is "..match_ret)
  • 運(yùn)行結(jié)果
string_match.png

總結(jié)#

  • 由第一組結(jié)果可以看出string.match()在遇到\0時(shí)不會(huì)停止查找,而是一直查找到字符串結(jié)尾。
  • 最后兩組結(jié)果對(duì)比可以發(fā)現(xiàn)參數(shù)init的作用,他指定了搜索匹配的起始位置。
  • 這一篇中有一個(gè)關(guān)于官方文檔的翻譯的疑惑,就是"If pattern specifies no captures, then the whole match is returned.",我總感覺(jué)我怎么翻譯都不太對(duì),麻煩明白的大神給我講一下是什么意思,其實(shí)給我舉個(gè)例子就明白了。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,693評(píng)論 19 139
  • 在挖掘分析的過(guò)程當(dāng)中對(duì)字符串的處理是極為重要的,且出現(xiàn)也較為頻繁,R語(yǔ)言作為當(dāng)前最為流行的開(kāi)源數(shù)據(jù)分析和可視化平臺(tái)...
    果果哥哥BBQ閱讀 6,161評(píng)論 0 8
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,691評(píng)論 0 4
  • re模塊手冊(cè) 本模塊提供了和Perl里的正則表達(dá)式類似的功能,不關(guān)是正則表達(dá)式本身還是被搜索的字符串,都可以...
    喜歡吃栗子閱讀 4,213評(píng)論 0 13
  • string庫(kù)提供了字符串處理的通用函數(shù)。 例如字符串查找、子串、模式匹配等。 當(dāng)在 Lua 中對(duì)字符串做索引時(shí),...
    chiguozi閱讀 4,226評(píng)論 0 3

友情鏈接更多精彩內(nèi)容