Lua模式匹配
1. 字符串匹配
-
string.find
:用于在指定的目标字符串中搜索指定的模式。找到一个模式后,会返回两个值:匹配到模式开始位置的索引和结束位置的索引。如果没有找到任何匹配,则返回nil。s = "hello world" i,j = string.find(s,"hello") print(i,j) --- 1 5
string.find具有两个可选参数。第3个参数是一个索引,用于说明从目标字符串的哪个位置开始搜索。第4个参数是一个布尔值,用于说明是否进行简单搜索(plain search )。所谓简单搜索就是忽略模式而在目标字符串中进行单纯的“查找子字符串”的动作:
string.find("a [word]","[")
以上代码的输出结果是:
malformed pattern (missing ']')
,原因在于[
本身具有特殊含义(正则表达式当中代表匹配)。如果想单纯的匹配[
这个字符,那么就应该把第4个参数设置为truei,j = string.find("a [word]","[",1,true) print(i,j) --- 3 3
-
string.match
:和find一样,也是做匹配的,但是string.match
返回的是目标字符串中与模式相匹配的那部分子串,而非该模式所在的位置print(string.match