lua在字符串中查找是否存在相应的子字符串string.find(s, pattern [, init [, plain]] )

在字符串中查找是否存在相应的子字符串string.find(s, pattern [, init [, plain]] )


参数
s - 字符串
pattern - 要查找的模式
init - 可选,开始查找位置,默认为1,可以为负数
plain - 可选,如果为true,禁用模式匹配
返回值
如果找到匹配,返回开始和结束位置;否则为nil
查找
print(string.find("你好!你好!你好!", "!"))--输出5 6--原因是一个汉字使用2个字节表示
print(string.find("123qwe456rty", "3q"))--输出3 4
模式匹配
print(string.find("123qwe456rty", "%d%d%d"))--输出1 3
print(string.find("123qwe456rty", "%d%d%d", 4))--输出7 9
print(string.find("123qwe456rty", "%d%d%d", 1, true))--输出nil
 print(string.find("werw 3423=4 das  =  da 545", "(%a+)%s*=%s*(%a+)")) ;--输出13 22 das da
备注:1、如果 find 的第二个参数使用了某种匹配模式, 并且模式串里面带括号,
 那么表示会“捕捉”括号括起来的模式匹配到的字符串。 
 捕捉, 当然会把他们作为返回值。这里捕捉了两下, 所以 find 多返回了两个值
2、lua 里面数组或者字符串的字符, 其下标索引是从 1 开始, 不是 0

附:
Lua 支持的字符类有:
 .  任意字符
 %s 空白符
 %p 标点
 %c 控制字符
 %d 数字
 %x 十六进制数
 %z 代表0的字符
 %a 字母
 %l 小写字母
 %u 大写字母
 %w 字母数字
 [\"'] 双引号
字符类的大写形式代表相应集合的补集, 比如 %A 表示除了字母以外的字符集
另外,* + - 三个,作为通配符分别表示:
*: 匹配前面指定的 0 或多个同类字符, 尽可能匹配更长的符合条件的字串
+: 匹配前面指定的 1 或多个同类字符, 尽可能匹配更长的符合条件的字串
-: 匹配前面指定的 0 或多个同类字符, 尽可能匹配更短的符合条件的字串

参考网站:http://www.howsoftworks.net/lua.api/standard_libraries/string_find.html


你可能感兴趣的:(lua)