2013-02-15 36 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