LuaJit转义的问题

本文探讨了Lua中特殊字符的转义方法,并对比了Lua与其他语言在转义字符处理上的不同之处。同时介绍了Lua中如何正确地使用正则表达式及一些常见转义字符的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在项目中,处理类似!30转为表现的字符串时,有人写了这样的一段代码“\![1-2][0-9]”,当换成luajit时启动报错了,出错原因在于转义字符使用不对。在很多语言中,正则的转义字符是“\”,但在lua中却不是,至少标准的不是。

引号,使用“\”进行转义,跟字符串定义类似

local s = “\"Hello World!\””

=> 输出 “Hello World!”  - 带双引号

 

其它字符如特殊的字符(被称为魔法字符):( ) . % + – * ? [ ] ^ $,想匹配这些字符时需要加上%,比如想匹配%则需要使用%%,%( 匹配左括号 %) 匹配右括号,如果%用于字母和数字的字符,意义就变了,比如%d、%a、%D、%U、%1。

“% + 大写字母”是所有对应小写字母的补集

.所有字符
%a字母
%c控制字符
%d数字
%l小写字母
%p标点符号
%s空白字符
%u大写字符
%w字母和数字字符
%x十六进制数字
%z内部表示为0的字符

 

+重复1次或多次
*重复0次或多次
-也是重复0次或多次
?出现0或1次

 

在lua中还是较为方便的处理嵌套的,因为它有%b - 匹配对称字符。

比如下面这个例子

local x = string.gsub(“xddddyxxxxxyxxxy”, “%bxy”, “a”)

print(x)

=>axxxxaxxa

 

不过要注意的是string.fromat中的格式跟C语言中的printf一样,与上面表格列出的捕获字符不同

不过也有特例和异常,可以参考这里:http://pgl.yoyo.org/luai/i/string.format

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值