如何使用正则表达式替换将 object:method(...) 转换为 method(object,...)。

我有许多 Lua(一种脚本语言)中的源代码行类似于

object:method(...)

后来我决定将该方法变为通用函数,然后我需要将上述行更改为

method(object,...)

我认为正则表达式替换可以解决我的问题,但我遇到了困难。

顺便说一下,对象和方法的名称遵循常规身份约定,只由字符,数字和 "_" 组成。

请帮忙。最好使用文本编辑器(如 Visual Studio)来完成此操作。

谢谢,在此提前致以感谢,

Ying

点赞
用户107090
用户107090

以下是 Lua 解决方案:

S=[[
object1:method1()
object2:method2(a)
object3:method3(a,b)
]]

S=S:gsub("(%w+):(%w+)%(%)","%2:(%1)")
S=S:gsub("(%w+):(%w+)%((.-)%)","%2:(%1,%3)")
print(S)
2016-01-17 15:36:48
用户3832970
用户3832970

你可以使用简单的搜索和替换:

\b(\w+):(\w+\s*)\(

并将其替换为 $2($1,

_解释_:

  • \b - 单词边界
  • (\w+) - 第1组:一个或多个单词字符(在替换中,此文本通过 $1 进行反向引用)
  • : - 字面意义上的冒号
  • (\w+\s*) - 第2组:1个或多个单词字符后跟零个或多个空格(在替换中,此文本通过 $2 进行反向引用)
  • \( - 字面意义上的左括号

参见 正则表达式演示

此表达式将在 Notepad++ 或 Visual Studio 中使用。

2016-01-17 16:04:35