Regex 如何使用正则表达式替换将对象:方法(…)转换为方法(对象…)
我有许多Lua(一种脚本语言)的源代码行,类似于 对象:方法(…) 后来我决定将该方法作为一个通用函数,然后我需要将上面的行更改为 方法(对象,…) 我认为正则表达式替换可以解决我的问题,但我只是在挣扎 顺便说一句,对象和方法的名称遵循常见的标识约定,例如仅由字符、数字和“\ux”组成 请帮忙。最好使用文本编辑器(如VisualStudio)来完成此操作 提前谢谢大家,Regex 如何使用正则表达式替换将对象:方法(…)转换为方法(对象…),regex,replace,lua,Regex,Replace,Lua,我有许多Lua(一种脚本语言)的源代码行,类似于 对象:方法(…) 后来我决定将该方法作为一个通用函数,然后我需要将上面的行更改为 方法(对象,…) 我认为正则表达式替换可以解决我的问题,但我只是在挣扎 顺便说一句,对象和方法的名称遵循常见的标识约定,例如仅由字符、数字和“\ux”组成 请帮忙。最好使用文本编辑器(如VisualStudio)来完成此操作 提前谢谢大家, Ying以下是Lua解决方案: S=[[ object1:method1() object2:method2(a) objec
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
-第1组:一个或多个单词字符(在替换中,此文本用(\w+)
反向引用)$1
-文字:
:
-第2组:1个或多个单词字符,后跟零个或多个空格(在替换中,此文本用(\w+\s*)
反向引用)$2
-文字\(
字符)(
此表达式将在记事本++或Visual Studio中使用。您可以使用简单的搜索和替换:
\b(\w+):(\w+\s*)\(
并替换为$2($1,
)
说明:
-单词边界\b
-第1组:一个或多个单词字符(在替换中,此文本用(\w+)
反向引用)$1
-文字:
:
-第2组:1个或多个单词字符,后跟零个或多个空格(在替换中,此文本用(\w+\s*)
反向引用)$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%,”)