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


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值