正则表达式处理脚本转译lua2js

 

最近的工作是项目移植

需要把大量的lua脚本转译成js脚本(cocos2dx升级cocoscreator)

因此也学习了一下强大的正则表达式

通过notepad++,使用宏录制,正则表达式替换的方法

实现了半自动化脚本转译

原文地址:http://www.cnblogs.com/billyrun/articles/6576248.html

 

具体来说

简单的部分比如local->var可以用基本的替换操作

而表转数组/表转关联数组

以及匿名函数/本地函数/成员函数的转换

就必须依靠正则表达式了

 

首先替换lua数组{}为js数组[]

这里只处理真数组,不处理其他种类表

匹配字\{([^=\{\}]+)\}替换[\1] #说明:确保{}内没有=号,真数组

--转换前
local arr1 = {1,2,3,4,5,6}
local arr2 = {
1,
2,
3,
4,
5,
6}
//转换后
local arr1 = [1,2,3,4,5,6]
local arr2 = [
1,
2,
3,
4,
5,
6]

之后替换lua表为js关联数组

匹配字(\{[^=\{\}]+)=([^\}]+\})替换\1:\2 #说明:左边不能包含=号右边可以包含,按顺序替换表中的=为:

目前不支持表嵌套

--转换前
local tb1 = {t1 = 1 , t2=2, t3=3}
local tb2 = {
    t1 = 1 , 
    t2=2, 
    t3=3
}
//转换后
local tb1 = {t1 : 1 , t2:2, t3:3}
local tb2 = {
    t1 : 1 , 
    t2:2, 
    t3:3
}

ps.为什么有先有后?因为lua里面只有table会用到{}

所以只用先后转为js数组和js关联数组,就可以保证这两者转译正确

 

另外还有一些简单的办法

可以在function后面加上{等等(单行匹配)

匹配字function (.+\))替换function \1{

 

正则表达式匹配代码中的中文硬编码

'[^x00-xff^)^'^\s]

匹配中英文换行

^\r\n[35a-zA-Z][a-zA-Z0-9_: ,-?'()<>]*\r\n\r\n

^[35a-zA-Z][a-zA-Z0-9_: ,-?'()<>]*\n\n

 

参考资料

http://deerchao.net/tutorials/regex/regex.htm

转载于:https://www.cnblogs.com/billyrun/articles/6576248.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值