专栏首页游戏杂谈LuaJit转义的问题

LuaJit转义的问题

之前在项目中,处理类似!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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Cocos2d-x V2.x版本对64bit的支持

    我所使用的是cocos2d-x V2.0版本,而且源码有部分代码是修改过的。好在cocos2d-x官方已经放出了一个支持64位的2.2.6版本,可以做为参考。

    meteoric
  • ant+yuicompressor 合并、压缩脚本与样式

    我使用的是Eclipse编写build.xml,你可以用其它的编辑器,前提是你已经安装了ant

    meteoric
  • Xcode修改项目的Build Location

    可以在项目最左侧的文件列表里展开Product,查看输出文件,按住control单击可以在Finder中显示,右侧辅助区域也会看到全路径

    meteoric
  • 正则表达式的规则

    黑泽君
  • Word反查字符的unicode码

    最近写字符处理的相关程序,需要和字符编码打交道,Windows自带的字符映射表只能通过unicode码查找字符,但是测试时通常要通过字符查找其unicode码,...

    极客中心
  • TextScanner:旷视新作文字识别新突破,确保字符阅读顺序

    由于深度学习和海量数据的涌现,场景文字识别技术获得飞速发展。但是先前同类方法存在种种缺点,为此,本文提出 TextScanner,一种鲁棒的基于分割的场景文字识...

    CV君
  • Java之字符流读写文件、文件的拷贝

    爱学习的孙小白
  • 漫画:如何优化 “字符串匹配算法”?

    说起“字符串匹配”,恐怕算得上是计算机领域应用最多的功能之一,为了满足这一需求,聪明的计算机科学家们发明了许多巧妙的算法。

    小灰
  • 艺术鬼才!Unicode 字符还能这么玩?

    上周的时候,朋友圈的直升飞机不知道为什么就火了,很多朋友开着各种花式飞机带着起飞。

    andyxh
  • JavaScript|计算字符串的字节数

    问题中提到计算字节数,首先需要对字节进行了解,Byte数是一个单位计量数值,其中字符串中单个的字符(英文、数字、特殊字符等)为一个字节,中文汉字是两个字节。

    算法与编程之美

扫码关注云+社区

领取腾讯云代金券