2010-05-10 91 views
1

因此,我正在调整一些我在网上找到的代码以适合我的需要。不过,我的set_pixel函数还有两个参数。既然有很多这种功能的调用,即使做一个快速粘贴也是非常繁琐的。所以,我认为这对我来说是学习一些简单的正则表达式的好时机。简单搜索和替换使用正则表达式

所以,我有这种类型的呼叫:

set_pixel(arg1, arg2);

,我想改变的东西,如:

set_pixel(arg1, arg2, arg3, arg4);

注:ARG1和2应予以保留,而arg3和arg4大部分时间都是相同的。

我该如何做到这一点?

+0

什么编程语言做到这一点适用于?例如,在C#中,可以使用一个重载方法,该方法接受两个参数,再生成两个参数,并将整个列表传递给第二个方法。另外,关于什么是参数以及如何解析它们的更多信息会有所帮助。 – JYelton 2010-05-10 19:36:17

+0

我喜欢在这里提到一些工具。为了创建正则表达式,我喜欢radsoft的regexdesigner http://www.radsoftware.com.au/regexdesigner/。 要使用创建的正则表达式使用像sed或grep这样的标准兼容工具。还有一个名为grepwin的工具,可以很好地替代Windows。 – schoetbi 2010-05-10 19:43:44

+1

它应该匹配'set_pixel(set_pixel(1,2),3)'? – kennytm 2010-05-10 19:45:33

回答

1
/set_pixel\(([^,)]*),([^,)]*)\)/ 

更换

set_pixel(\1,\2,arg3,arg4) 

根据不同的语言,你可能会虽与某种重构工具,默认参数,提供更好的服务的情况下,超载等

+0

我使用内置的搜索和替换CodeBlocks与正则表达式复选框选中,但它说我没有得到任何匹配... – nunos 2010-05-10 19:44:48

+1

离开前导斜杠和结尾斜杠,他们是常见的正则表达式分隔符像JavaScript和其他语言,但你不需要像CodeBlocks这样的开发工具。 – 2010-05-10 20:03:24

0

您可以使用这样的事情:

s/set_pixel\(([a-zA-Z0-9_]*), ([a-zA-Z0-9_]*)\);/set_pixel\($1, $2, arg3, arg4\);/g 

与您喜爱的正则表达式的玩具。你会想根据你期望的set_pixel输入来调整字符类。

相关问题