Regex 如何使用正则表达式替换将对象:方法(…)转换为方法(对象…)

Regex 如何使用正则表达式替换将对象:方法(…)转换为方法(对象…),regex,replace,lua,Regex,Replace,Lua,我有许多Lua(一种脚本语言)的源代码行,类似于 对象:方法(…) 后来我决定将该方法作为一个通用函数,然后我需要将上面的行更改为 方法(对象,…) 我认为正则表达式替换可以解决我的问题,但我只是在挣扎 顺便说一句,对象和方法的名称遵循常见的标识约定,例如仅由字符、数字和“\ux”组成 请帮忙。最好使用文本编辑器(如VisualStudio)来完成此操作 提前谢谢大家, Ying以下是Lua解决方案: S=[[ object1:method1() object2:method2(a) objec

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

对象:方法(…)

后来我决定将该方法作为一个通用函数,然后我需要将上面的行更改为

方法(对象,…)

我认为正则表达式替换可以解决我的问题,但我只是在挣扎

顺便说一句,对象和方法的名称遵循常见的标识约定,例如仅由字符、数字和“\ux”组成

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

提前谢谢大家,


Ying

以下是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)

下面是一个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)

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

\b(\w+):(\w+\s*)\(
并替换为
$2($1,

说明:

  • \b
    -单词边界
  • (\w+)
    -第1组:一个或多个单词字符(在替换中,此文本用
    $1
    反向引用)
  • -文字
  • (\w+\s*)
    -第2组:1个或多个单词字符,后跟零个或多个空格(在替换中,此文本用
    $2
    反向引用)
  • \(
    -文字
    字符)


此表达式将在记事本++或Visual Studio中使用。

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

\b(\w+):(\w+\s*)\(
并替换为
$2($1,

说明:

  • \b
    -单词边界
  • (\w+)
    -第1组:一个或多个单词字符(在替换中,此文本用
    $1
    反向引用)
  • -文字
  • (\w+\s*)
    -第2组:1个或多个单词字符,后跟零个或多个空格(在替换中,此文本用
    $2
    反向引用)
  • \(
    -文字
    字符)


此表达式将在记事本++或Visual Studio中工作。

如果参数列表包含括号,则此表达式不起作用,但可以通过使用
%b()
和少量后处理来轻松解决此问题。
S=S:gsub((%w+):(%w+)(%w+)(%b(),%2(%1\0%3\0”):gsub(“%z%z%(“,”,“):gsub(“,?%,”)%z%,“)
如果参数列表中包含括号,则不起作用,但使用
%b()
和一些后期处理可以很容易地解决这一问题。
S=S:gsub((%w+):(%w+)(%w+)(%b()),“%2(%1\0\0%3\0”):gsub(“%z%z%(“,”,“):gsub(“,?%)%z%,”)