Q:模式匹配字符串的相关函数?

A:

--[[ string.find(s, pattern [, init [, plain]])在字符串"s"中查找第一个与匹配模式"pattern"相匹配的子串,函数返回子串的開始位置和终止位置。假设未找到返回"nil"。假设在"pattern"中定义了捕获,捕获物也会在之后依次返回。

"init"可指定从字符串"s"的什么位置開始查找,默觉得1。

"plain"指定是否以模式匹配的形式查找子串,假设"plain"为0, 那么将依据"pattern"的字面意思查找子串。默觉得非0值。]] s = "Hello World! 123 %a+" print(string.find(s, "l")) --> 3 3 print(string.find(s, "l", 6)) --> 10 10 print(string.find(s, "lll", 6)) --> nil print(string.find(s, "%a+", 6)) --> 7 11 print(string.find(s, "%a+", 6, 0)) --> 18 20 -- 通过使用第三个參数能够实现查找字符串中全部匹配"pattern"的子串。 local b = 0 local e = 0 while true do -- 从匹配位置的下一个位置開始继续查找。 b, e = string.find(s, "%a+", e + 1) if b == nil then break end io.write(string.format("%s, ", string.sub(s, b, e))) --> Hello, World, a, end print() --[[ string.gsub(s, pattern, repl [, n]) 将字符串"s"中前"n"个与匹配模式"pattern"相匹配的子串替换为"repl", "n"假设不指定,默认替换全部的匹配。 函数返回被替换后的字符串。以及替换的次数。 1、假设"repl"是一个字符串(当中能够使用捕获物),那么把这个字符串作为替换品。 特例,"%0"代表整个匹配。 2、假设"repl"是一个"table",每次匹配时都会用第一个捕获物作为键去查这张表。 假设"repl"是一个函数,则在每次匹配时都会以全部捕获物作为參数调用这个函数。 3、假设"pattern"中没有设定捕获。则默认捕获整个"pattern"。 4、假设"table"的查询结果或者函数的返回结果是一个字符串或是个数字时, 都将其作为替换品。而结果为"false"或"nil"时不作替换(即保留匹配前的原始串)。]] print(string.gsub("Lua is cute", "cute", "great")) --> Lua is great 1 print(string.gsub("all lii", "l", "x")) --> axx xii 3 print(string.gsub("Lua is great", "perl", "tcl")) --> Lua is great 0 print(string.gsub("hello world", "(%w+)", "%1 %1")) --> hello hello world world 2 print(string.gsub("hello world", "%w+", "%0 %0", 1)) --> hello hello world 1 print(string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")) --> world hello Lua from 2 print(string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)) --> home = /home/roberto, user = roberto

posted @ 2017-08-07 14:14 llguanli 阅读(...) 评论(...) 编辑 收藏

高速掌握Lua 5.3 —— 字符串库 (2)相关推荐

  1. Lua中的字符串函数库

    Lua解释器对字符串的支持很有限.一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容.在Lua中操纵字符串的功能基本来自于string库. 字符串库中的一些函数是非 ...

  2. Step By Step(Lua字符串库)

    http://www.cnblogs.com/stephen-liu74/archive/2012/07/11/2425233.html  1. 基础字符串函数:     字符串库中有一些函数非常简单 ...

  3. Lua字符串库中的几个重点函数介绍

    在<Lua中的一些库>中也说到了,要对string库的模式匹配进行单独的讲解.对于字符串的处理,对于任何语言的学习来说,都是一个难点,而且也是一个必会的知识点.给你一个字符串,让你按照某种 ...

  4. string返回第n个字符_Programming in Lualua学习第13期 Lua字符串库

    微信公众号:GameToolDev 关注可了解更多的游戏工具开发教程.问题或建议,请公众号留言; 1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len( ...

  5. SDS(Simple Dynamic String)一个简易动态字符串库

    SDS(Simple Dynamic Strings)是一个C语言字符串库,设计中增加了从堆上分配内存的字符串,来扩充有限的libc字符处理的功能,使得: 使用更简便 二进制安全 计算更有效率 而且仍 ...

  6. SDS:一个简易动态字符串库

    http://blog.jobbole.com/68119/ 英文原文: https://github.com/antirez/sds/blob/master/README.md SDS(Simple ...

  7. Lua中获取字符串长度

    偶然的情况下,需要用Lua代码获取字符串的长度,结果发现结果和自己想象的不一样,一个汉字算两个英文字符的时代已经快过去了,一个中文字符打印出来的长度为3,引起了我的好奇,查找资料了解了具体原因 不同的 ...

  8. Lua教程-1:C/C++操作Lua数组和字符串

    Lua教程-1:C/C++操作Lua数组和字符串 C/C++操作Lua数组 Lua数组Overview 通用Table操作方法 专门的数组操作方法 C/C++操作Lua字符串 基本字符串操作 格式化输 ...

  9. Lua中的基本函数库

    基本函数库为Lua内置的函数库,不需要额外装载 assert (v [, message]) 功能:相当于C的断言, 参数: v:当表达式v为nil或false将触发错误, message:发生错误时 ...

最新文章

  1. js中操作数组的一些方法
  2. 从Python调用外部命令
  3. Ubuntu 16.04下为Android编译OpenCV 3.1.0 Manager
  4. JAVA多线程学习(一)
  5. Python_ collections_defaultdict默认字典
  6. 安装vmware 6.52 Red Hat Enterprise Linux 5(rhel-5.1-server-i386-dvd) openldap2.4
  7. jQuery 判断所有图片加载完成
  8. java父类转子类_java中什么是继承,和继承的接口的关系?
  9. 使用 Arduino 和 LM35 温度传感器监测温度
  10. 【转】注册Azure AD 应用程序
  11. linux 命令find
  12. mysql select count() count(1)_select count()和select count(1)的区别和执行方式讲解
  13. macOS Mojave 10.14.6 ISO/CDR 虚拟机镜像下载
  14. 计算机无法从硬盘启动怎么办,电脑开机无法引导硬盘启动怎么解决
  15. 有一个多项式:Pn(x)=a0x+a1x+….+anx(n=10),它们的系数存放在一个一维数组中,编写程序,输入系数和x的值,计算并输出Pn(x)的结果。
  16. 使用Faiss来加速计算向量之间的相似度
  17. Android蓝牙音乐(基于Android10)
  18. python自然语言处理之spacy详解
  19. springboot报错:Could not get a resource from the pool redis.clients.jedis.exceptions.JedisConnection
  20. Sentinel控制台设置限流规则

热门文章

  1. IDEA 初始配置教程
  2. 7、Java并发性和多线程-如何创建并运行线程
  3. Swift - 文本输入框(UITextField)的用法
  4. 01 MySQL锁概述
  5. Exception in thread AWT-EventQueue-0 java.lang.IllegalThreadStateException
  6. 演义群侠传(七)【GC垃圾回收】
  7. 基于vmware服务器虚拟化管理,基于Vmware的服务器虚拟化管理论文.doc
  8. 损害计算机系统,哪些情况下容易导致电脑系统崩溃损坏?
  9. 一个与神经网络分类特征旋转不变性有关的实验
  10. linux条件表达式例子,Linux的Iptables命令的基本知识(三)-常用匹配条件示例和执行动作...