我想匹配(從類文件中選擇)methodsname,屬性名稱和字段名稱。c#正則表達式 - 從類文件(.cs)中選擇類屬性名稱,方法名稱和字段
這是示例類:
class Perl
{
string _name;
public string Name { get; set; }
public Perl()
{
// Assign this._name
this._name = "Perl";
// Assign _name
_name = "Sam";
// The two forms reference the same field.
Console.WriteLine(this._name);
Console.WriteLine(_name);
}
public static string doSomething(string test)
{
bla test;
}
}
我的方法的代碼:
(?:public|private|protected)([\s\w]*)\s+(\w+)\s*\(\s*(?:\w+\s+(\w+)\s*,?\s*)+\)
和我的問題:
- 這上面的正則表達式的代碼所有的方法和它工作得很好,但 也我想它選擇方法名稱,但沒有參數和 訪問器。使用我的代碼的結果將是因此從exaplmce類: 公衆的Perl()和公共靜態DoSomething的(字符串測試),但我想這樣的結果:的Perl()和DoSomething的()。所以 - 我的代碼匹配很好,但我想要顯示的結果就像我在前面的句子中寫的 。
- 如何選擇屬性?結果顯示:類型和屬性 名稱。因此,從實例級結果將是:字符串名稱
- 如何選擇帶結果的字段:type field_name。在出情況下, 將是:字符串_name
可能是[This SO Answer](http://stackoverflow.com/a/11647554/1495442) – Ria 2012-08-11 12:03:19
的重複在代碼文件上使用反射而不是正則表達式編譯的類可能有意義嗎?你會得到更可靠的結果(即你不必擔心你的正則表達式命令是否覆蓋了每種可能的情況),它可以用於任何.NET語言,而不僅僅是C#。 – 2012-08-11 12:06:56
所以我得到.cs類文件的文件夾。我可以編譯它「在空氣中」,然後使用反射?如何動態編譯類例如是否有我可以使用的函數?例如。在按鈕上單擊comile選定文件夾中的所有cs文件? – born2fr4g 2012-08-11 12:30:31