還有很多其他的。這裏只是幾個簡單的例子。
由於其大小,Lua不支持正則表達式。相反,我們采用了自己的模式匹配。
string.find函數用於在給定的目標字符串中搜索模式。最簡單的事情就是搜索單詞。如果使用單詞趙奧,他將返回實際的索引和單詞的結尾,如果沒有找到,則返回nil。
如果匹配成功,可以用string的返回值調用string.sub,find find提取目標字符串中與模式匹配的那部分子字符串。
String.find還有壹個可選的第三個參數,它是壹個索引,告訴函數從目標字符串的那個位置開始搜索。
函數string.math在某種意義上類似於函數string.find,也是在字符串中搜索的壹種模式。區別在於string.math返回目標字符串中與模式匹配的子字符串部分,而不是位置。
對於固定模式,這個功能可能沒有意義,比如“妳好”。但是當使用可變模式時,它的特征就顯現出來了。
string.gusb函數有三個參數:目標字符串、模式和替換字符串。該函數用替換字符串替換模式的所有出現。
還有壹個可選的第四個參數來限制替換的數量。
string.gsub的函數也有壹個結果,就是實際替換的次數。例如,下面是壹個計算字符串中空格數的簡單方法。
String.gmatch返回壹個函數。通過這個函數,妳可以遍歷壹個字符串中指定模式出現的所有地方。
當模式“%a+”表示匹配壹個或多個字母字符的序列(即單詞)時,其中的所有單詞都將被遍歷並存儲在其中。“點”在模式中有特殊含義,所以必須寫成“%”
介意使用字符分類來創建更多有用的模式。字符分類就是其中壹種模式。可以匹配熱頂級sum中的任何字符。例如,類別“%d”可以匹配任何數字。例如,您可以使用
“%d% d/%d% d/%d% d% d”以“dd/mm/yyyy”格式搜索日期
這裏是所有的角色分類。
這些類別的大寫表示它們的補集,例如,“%A”表示所有非字母字符。
在圖案中,還有壹些被稱為“神奇字符”的字符串,它們具有特殊的含義。這些神奇的角色是
{ } .% + - * ?[ ] ^ $
字符串%被用作這些神奇字符的轉義字符。比如,“%”表示匹配點“%%”表示匹配字符“%”。您不僅可以將“%”用於魔法字符,還可以用於所有其他非字母數字字符。當您不確定某個字符是否需要轉義時,您應該直接在它前面加上壹個轉義字符。
對於lua來說,模式只是普通的字符串。並遵循與他的弦相同的規則。只有模式函數會解釋它們,參與者會將“%”視為轉義字符。
用戶自己的字符分類可以通過組合不同的字符分類或壹堆括號中的單個字符來創建。這種新的字符分類叫做字符集。例如,字符集["%w_"]意味著同時匹配字母、數字和下劃線。字符集[01]表示匹配二進制數字字符集[%[%]]表示匹配方括號本身。如果妳需要計算壹段文字中元音的個數,妳可以這樣寫
在字符集中表示字符範圍的方法是寫出支付範圍的第壹個字符和最後壹個字符,並用橫線將它們連接起來,但這種形式很少使用,因為大多數常用的字符範圍都是預定義的。如果[0-9]是% d。
[0-9a-fA-F]是“%x”,但如果需要找八進制數,可以寫成[0-7]而不是[01234567]。在字符集前添加“”可以表示該字符集的補碼。例如,[0-7]表示所有不是八進制數字的字符。模式[\ n]表示除換行符以外的字符。簡單分類的話,也可以用大寫形式得到它的補碼,“%S”明顯比[%s]短。
也可以通過修飾語鄙視模式中重復的可選部分。Lua提供了四個修改器。
修飾符“+”屬於字符串分類的壹個或多個字符。他總是得到最長的符合模式的序列。模式“%a+”代表壹個或多個字母,即單詞:
模式“%d+”匹配壹個或多個數組(整數)。
修飾符“*”類似於“+”,但它也接受0次出現。典型用途是匹配圖案不同部分之間的空間。例如,對於matching()或()這樣的壹對括號,可以使用“%(%s*%)”,其中%s*可以將0匹配到多個空格。
另壹個例子是使用模式“[_%a][_%w]*”來匹配lua中的標識符。標識符是壹個序列,以字母或下劃線開始,後面跟著0到多個下劃線、字母或數字。
修飾符“-”和“*”壹樣,也用於匹配0個或多個字符。但是他會匹配最短的子串。雖然看起來兩者沒什麽區別,但效果卻大相徑庭。如果使用“[_%a][_%w]-”來查找標識符,他只會找到第壹個字母,因為“_%w]-”總是匹配壹個空字符串。假設妳想在壹個C程序中找壹個註釋,壹般會嘗試“/%*”。*%/"第壹,然後因為"。* "會盡可能的展開,程序中第壹個"/* "只會匹配最後壹個" */"。
但是如果妳用”。——“會是這樣的。
修飾符“?”用於匹配可選字符。例如,在壹段文本中查找壹個整數,這個整數可以包含壹個可選符號。那麽適用的模式“+-]?“%d+”可以完成這項任務。他會搭配物品。
"-12" "23" "+1000 " "和"+-]"是匹配'+'和'-'的字符分類,後面跟'?'但是這個符號是可選的。與其他系統不同,Lua中的修飾符只能用於壹個字符分類,不能用於修改壹組分類。無法寫入與可選點擊匹配的模式。
如果模式以“”開頭,它將只匹配目標字符串的開頭。如果模式以' $ '結尾,它將只匹配目標字符串的結尾。
在模式中,您還可以使用“%b”來匹配字符對。他的拼寫是“%b”
Lua中的字符串和c #中的是壹樣的。壹旦字符串類型的值發生變化,就需要為新值打開空間,並指向這個空間。也就是說,每次對字符串變量進行修改,都會返回壹個新的值,在後面的函數中就不做過多解釋了。
還有很多其他的。這裏只是幾個簡單的例子。
由於其大小,Lua不支持正則表達式。相反,我們采用了自己的模式匹配。
string.find函數用於在給定的目標字符串中搜索模式。最簡單的就是搜索單詞。如果使用單詞趙奧,他將返回實際的索引和單詞的結尾,如果沒有找到,則返回nil。
如果匹配成功,可以用string的返回值調用string.sub,find find提取目標字符串中與模式匹配的那部分子字符串。
String.find還有壹個可選的第三個參數,它是壹個索引,告訴函數從目標字符串的那個位置開始搜索。
函數string.math在某種意義上類似於函數string.find,也是在字符串中搜索的壹種模式。區別在於string.math返回目標字符串中與模式匹配的子字符串部分,而不是位置。
對於固定模式,這個功能可能沒有意義,比如“妳好”。但是當使用可變模式時,它的特征就顯現出來了。
string.gusb函數有三個參數:目標字符串、模式和替換字符串。該函數用替換字符串替換模式的所有出現。
還有壹個可選的第四個參數來限制替換的數量。
string.gsub的函數也有壹個結果,就是實際替換的次數。例如,下面是壹個計算字符串中空格數的簡單方法。
String.gmatch返回壹個函數。通過這個函數,妳可以遍歷壹個字符串中指定模式出現的所有地方。
當模式“%a+”表示匹配壹個或多個字母字符的序列(即單詞)時,其中的所有單詞都將被遍歷並存儲在其中。“點”在模式中有特殊含義,所以必須寫成“%”
介意使用字符分類來創建更多有用的模式。字符分類就是其中壹種模式。可以匹配熱頂級sum中的任何字符。例如,類別“%d”可以匹配任何數字。例如,您可以使用
“%d% d/%d% d/%d% d% d”以“dd/mm/yyyy”格式搜索日期
這裏是所有的角色分類。
這些類別的大寫表示它們的補集,例如,“%A”表示所有非字母字符。
在圖案中,還有壹些被稱為“神奇字符”的字符串,它們具有特殊的含義。這些神奇的角色是
{ } .% + - * ?[ ] ^ $
字符串%被用作這些神奇字符的轉義字符。比如,“%”表示匹配點“%%”表示匹配字符“%”。您不僅可以將“%”用於魔法字符,還可以用於所有其他非字母數字字符。當您不確定某個字符是否需要轉義時,您應該直接在它前面加上壹個轉義字符。
對於lua來說,模式只是普通的字符串。並遵循與他的弦相同的規則。只有模式函數會解釋它們,參與者會將“%”視為轉義字符。
用戶自己的字符分類可以通過組合不同的字符分類或壹堆括號中的單個字符來創建。這種新的字符分類叫做字符集。例如,字符集["%w_"]意味著同時匹配字母、數字和下劃線。字符集[01]表示匹配二進制數字字符集[%[%]]表示匹配方括號本身。如果妳需要計算壹段文字中元音的個數,妳可以這樣寫
在字符集中表示字符範圍的方法是寫出支付範圍的第壹個字符和最後壹個字符,並用橫線將它們連接起來,但這種形式很少使用,因為大多數常用的字符範圍都是預定義的。如果[0-9]是% d。
[0-9a-fA-F]是“%x”,但如果需要找八進制數,可以寫成[0-7]而不是[01234567]。在字符集前添加“”可以表示該字符集的補碼。例如,[0-7]表示所有不是八進制數字的字符。模式[\ n]表示除換行符以外的字符。簡單分類的話,也可以用大寫形式得到它的補碼,“%S”明顯比[%s]短。
也可以通過修飾語鄙視模式中重復的可選部分。Lua提供了四個修改器。
修飾符“+”屬於字符串分類的壹個或多個字符。他總是得到最長的符合模式的序列。模式“%a+”代表壹個或多個字母,即單詞:
模式“%d+”匹配壹個或多個數組(整數)。
修飾符“*”類似於“+”,但它也接受0次出現。典型用途是匹配圖案不同部分之間的空間。例如,對於matching()或()這樣的壹對括號,可以使用“%(%s*%)”,其中%s*可以將0匹配到多個空格。
另壹個例子是使用模式“[_%a][_%w]*”來匹配lua中的標識符。標識符是壹個序列,以字母或下劃線開始,後面跟著0到多個下劃線、字母或數字。
修飾符“-”和“*”壹樣,也用於匹配0個或多個字符。但是他會匹配最短的子串。雖然看起來兩者沒什麽區別,但效果卻大相徑庭。如果使用“[_%a][_%w]-”來查找標識符,他只會找到第壹個字母,因為“_%w]-”總是匹配壹個空字符串。假設妳想在壹個C程序中找壹個註釋,壹般會嘗試“/%*”。*%/"第壹,然後因為"。* "會盡可能的展開,程序中第壹個"/* "只會匹配最後壹個" */"。
但是如果妳用”。——“會是這樣的。
修飾符“?”用於匹配可選字符。例如,在壹段文本中查找壹個整數,這個整數可以包含壹個可選符號。那麽適用的模式“+-]?“%d+”可以完成這項任務。他會搭配物品。
"-12" "23" "+1000 " "和"+-]"是匹配'+'和'-'的字符分類,後面跟'?'但是這個符號是可選的。與其他系統不同,Lua中的修飾符只能用於壹個字符分類,不能用於修改壹組分類。無法寫入與可選點擊匹配的模式。
如果模式以“”開頭,它將只匹配目標字符串的開頭。如果模式以' $ '結尾,它將只匹配目標字符串的結尾。
在模式中,您還可以使用“%b”來匹配字符對。他的拼寫是“%b”
s= "括號線"
print(string.gsub(s," %d()"," ")-& gt;壹行
這種模式的典型用法包括" %b ()" "%b []" "%b {}" "%b
capture函數可以根據模式從目標字符串中提取與模式匹配的內容。當指定捕獲時,需要捕獲的模式部分應該寫在壹對括號中。
這裏括號內的值是匹配兩個單詞,括號外的是先匹配空格再匹配等號繼續匹配空格。並且將返回表達式中包含在()中的值。