2013-02-15 76 views
2

我工作的一个相当大的项目(C#),并从地方到另一个地方,我有段看起来像这样:Visual Studio中的正则表达式顶替重复捕获组

((int)foo).ToString() + "," + ((int)bar).ToString() + "," + ((int)zig).ToString() + ... 

逗号分隔字符串有任意长度(平均范围从1到5,但我不确定是否有更多)。到目前为止,我能找到我要的使用实例:

\({.+}\).ToString\(\)(*\+ *"," *\+ *\({.+}\).ToString\(\))* 
现在

每个发生的我希望像这样的东西来替代它:

{ (int)foo, (int)bar, (int)zig , ...} 

更换每一次出现是手动不可行,是否有替代正则表达式来完成这项工作?

感谢

回答

0

是的,你可以做一个查找和使用正则表达式在Visual Studio中进行更换。

在你需要使用大括号的标记表达和使用\1\2

+0

您好Ulises,谢谢你的回复。 这里面临的挑战是逗号分隔字符串的长度是任意的。 我试图用这个正则表达式替换匹配:\ {\ 1,\ 2 * \} 但星号在整数数组中被硬编码。现在看起来像这样: {(int)foo,*} – 2013-02-15 17:43:41

+0

做2找到并替换,一个用于\({。+} \)。ToString \(\),然后多一个\ + *“, “* \ + + – Ulises 2013-02-15 17:54:04

+0

感谢它帮助了很多 – 2013-02-15 18:06:53

0

我可能会误解你的问题重用他们的几句话,但听起来好像你已经有了答案。 ..使用System.Text.RegularExpressions.Regex.Replace(string, string)。如果您需要精细控制,请考虑用名称包装您的捕获:\((?<foo>.+)\)(或使用索引)。使用这些捕获,如果需要循环遍历匹配,然后迭代捕获,则可以手动进行替换。

+0

嗨RayB64,谢谢你的回复。我试图在Visual Studio中使用查找和替换工具,并且该项目是用c#编写的,而不是使用c#来执行查找和替换 – 2013-02-15 17:53:21