博客
关于我
lua正则替换_Lua字符串模式匹配函数小结
阅读量:740 次
发布时间:2019-03-22

本文共 1680 字,大约阅读时间需要 5 分钟。

模式匹配函数是Lua字符串库中功能最强大的部分。与其他脚本语言不同,Lua不使用POSIX规范的正则表达式进行模式匹配。这种选择主要是出于程序大小的考虑,Lua的实现仅用了500行代码,而POSIX规范的正则表达式实现需要4000行左右。尽管如此,Lua的模式匹配功能非常强大,并且包含了一些标准POSIX模式匹配无法实现的功能。

以下是Lua字符串库中常用的模式匹配函数及其用途:

1. string.find:用于在字符串中搜索模式并返回匹配位置

string.find(str, pattern, init)函数用于在目标字符串中搜索指定模式。函数返回匹配项的开始和结束索引。如果没有找到匹配项,返回nil。第三个参数init指定起始位置,用于继续搜索后的位置。

示例:

s = "hello world"

pos = string.find(s, "hello")

--> pos: 1 5

pos = string.find(s, "world")

--> pos: 7 11

pos = string.find(s, "l")

--> pos: 3 3

pos = string.find(s, "lll")

--> nil

2. string.gsub:全局字符串替换函数

string.gsub(str, pattern, repl, n)函数用于对源字符串中的所有匹配项进行替换。返回替换后的字符串、替换次数以及可能的替换结果。

示例:

s = "hello world"

s = string.gsub(s, "hello", "hi")

--> hi world

s = string.gsub("Lua is cute", "cute", "great")

--> Lua is great

s = string.gsub("all lii", "l", "x", 1)

--> axl lii

3. string.gmatch:返回迭代器函数

string.gmatch(str, pattern)函数返回一个迭代器,用于遍历字符串中的所有匹配项。该函数在Lua中非常有用,可以用来逐个处理匹配结果。

示例:

s = "hello world from Lua"

for w in string.gmatch(s, "%a+") do

print(w)

end

4. string.match:查找第一个匹配项

string.match(str, pattern, init)函数用于查找字符串中的第一个匹配项。返回匹配项的捕获结果或nil。如果使用第三个参数init,可以指定起始位置。

示例:

pos = string.match("abcdaef", "a")

--> a

5. string.reverse:字符串反转函数

string.reverse(str)函数用于返回一个字符串的倒序排列。

示例:

reversed_str = string.reverse("abcde")

--> edcba

6. string.dump:二进制代码函数

string.dump(function)函数用于返回指定函数的二进制代码。该函数仅适用于没有上值的Lua函数。

Lua的模式匹配功能非常强大,支持多种模式修饰符和字符类。以下是常用的模式修饰符:

- %+:匹配一个或多个重复的字符

- *:匹配零个或多个重复的字符

- -:匹配零个或多个重复的字符(最短匹配)

- ?:匹配零个或一个重复的字符

这些修饰符可以与字符类组合使用,例如:

%d+:匹配一个或多个数字

%w+:匹配一个或多个字母或数字

%s*:匹配零个或多个空白字符

对于更复杂的匹配需求,可以使用括号创建字符集合,例如:

%[a-z]:匹配一个小写字母

%[^%s]:匹配一个非空白字符

此外,Lua支持使用转义字符来处理特殊字符,例如:

'%%':匹配一个 '%' 字符

''%.'':匹配一个 '.' 字符

这些特性使得Lua的模式匹配功能非常灵活和强大。

转载地址:http://pluwk.baihongyu.com/

你可能感兴趣的文章
ORACLE 客户端工具连接oracle 12504
查看>>
Oracle 客户端连接时报ORA-01019错误总结
查看>>
oracle 导出sql数据库表结构,使用sql developer 导出Oracle数据库中的表结构
查看>>
oracle 嵌套表 例子,Oracle之嵌套表(了解)
查看>>
Oracle 常用命令
查看>>
Oracle 常用的V$视图脚本(二)
查看>>
Oracle 并行原理与示例总结
查看>>
oracle 并集 时间_Oracle集合运算符 交集 并集 差集
查看>>
Oracle 序列sequence 开始于某个值(10)执行完nextval 发现查出的值比10还小的解释
查看>>
oracle 执行一条查询语句,把数据加载到页面或者前台发生的事情
查看>>
oracle 批量生成建同义词语句和付权语句
查看>>
oracle 抓包工具,shell 安装oracle和pfring(抓包) 及自动环境配置
查看>>
Oracle 拆分以逗号分隔的字符串为多行数据
查看>>
Oracle 排序中使用nulls first 或者nulls last 语法
查看>>
oracle 插入date日期类型的数据、插入从表中查出的数据,使用表中的默认数据
查看>>
Oracle 操作笔记
查看>>
oracle 数据库 安装 和优化
查看>>
oracle 数据库dg搭建规范1
查看>>
Oracle 数据库常用SQL语句(1)
查看>>
Oracle 数据库特殊查询总结
查看>>