0
我正在嘗試編寫一個正則表達式替換表達式,它將用C#等效替換完全限定的泛型類型名稱。例如,下面的文字:正則表達式可以替換表達式訪問命名組中的多個捕捉嗎?
System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[MyNamespace.MyClass, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]
將成爲繼C#類型名稱:
System.Collections.Generic.Dictionary<System.String, MyNamespace.MyClass>
我的正則表達式需要,無論類型參數的數量在那裏工作都在泛型類型。我已經寫了成功抓住了泛型類型和類型參數的表達式爲兩個命名組:
^(?<GenericType>.+)`\d\[(?:\[?(?<GenericTypeParam>\S*),[^\]]+\]?,?)+\]$
現在我需要編寫一個生成C#類型名稱替換表達。但是因爲在「GenericTypeParam」組中可以有多個捕獲,我需要能夠在我的替換表達式中引用可變數量的捕獲。下面是替換表達我現在所擁有的:
${GenericType}<${GenericTypeParam}>
但由於它的名字引用「GenericTypeParam」組,它得到了集團價值,這是該組中的最後一個捕捉值。所以,這個替換表達式的輸出是:
System.Collections.Generic.Dictionary<MyNamespace.MyClass>
所以我的輸出字符串只包含組中的最後一個捕獲。 有沒有什麼方法可以訪問替換表達式中的其他捕獲?