【发布时间】:2015-10-29 17:21:28
【问题描述】:
我有一个程序,我必须检查是否有任何自动属性类型与类名匹配。
所以,例如,如果我有:
public class User
{
//Some code here
}
public class Cars
{
public string Brand {get; set;}
public string YearModel {get; set;}
public List<User> HasRented {get; set;}
}
现在,我已经有了匹配类名的代码,所以我可以从“公共类用户”中获取名称“用户”。问题是,我需要正则表达式从“public List<User> HasRented {get; set;}”获取“List<User>”。当然,我想获取所有的属性类型。所以我也希望这两个“字符串”在正则表达式上匹配。
如果有帮助的话,我已经有了一个获取属性名称的正则表达式,所以也许有人可以帮我修改它以获取属性类型?
正则表达式: \w+(?=\s*{\s*get\b)
编辑:忘了提到我将源作为字符串,这就是为什么我想将它与正则表达式匹配。更清楚一点:我需要帮助的唯一事情是正则表达式从包含填充有自动属性的类的文本中获取属性类型。与类名不匹配。
【问题讨论】:
-
只是为了让我正确理解这一点:您将源作为 string 并希望从中提取信息?代码没有编译到你的程序集中,所以你可以直接使用
Cars和User类型吗? -
如果你想从 C# 源代码中提取信息,为什么不使用 Roslyn?似乎它会比正则表达式更可靠...
-
是的,对不起。忘了说我有一个字符串的来源。
-
public\s(?
[^\s]+)\s[^\s]+\s\{[^\}\n]+\} -
Rinecamo 我在regexr 上尝试了你的正则表达式,但没有匹配到