下面是我的 C# 代码 CS 文件中行的快照,我正在尝试从我的类文件中提取强制字段或支持字段。
1) 有没有办法让我动态地将 cs 文件加载到 .NET 应用程序中并提取信息,从文件路径加载 cs 文件开始?
2) 针对上述问题,我目前正在通过 Regex 提取信息。
第一个正则表达式 - (m_oSupportedFields.).+?(?=EnumSupported.Mandatory;|EnumSupported.Supported)
第二个正则表达式 - (..+)\=
结果如下:-
我想要实现的是通过正则表达式(一个正则表达式用于 EnumSupported.Mandatory,一个正则表达式用于 EnumSupported.Supported)提取 Persona.Forename、Personal.Surname 和其他字段。
此外,我正在尝试迎合格式错误的行,例如
m_oSupportedFields.Personal.DOB.Day.Supported=EnumSupported.Supported; (注意等号之间的空格)
或
m_oSupportedFields.Personal.DOB.Day.Supported = EnumSupported.Supported; (注意中间的双空格)
甚至
m_oSupportedFields.Personal.Surname.Supported = EnumSupported.Mandatory; (注意枚举在第二行)
请指教我应该如何为这种情况编译正则表达式。
谢谢。
文本版本已更新
m_oSupportedFields.Personal.Surname.Supported = EnumSupported.Mandatory;
m_oSupportedFields.Personal.Forename.Supported = EnumSupported.Mandatory;
m_oSupportedFields.Personal.MiddleName.Supported = EnumSupported.Supported;
m_oSupportedFields.Personal.DOB.Day.Supported = EnumSupported.Supported;
m_oSupportedFields.Personal.DOB.Month.Supported = EnumSupported.Supported;
m_oSupportedFields.Personal.DOB.Year.Supported = EnumSupported.Supported;
请您参考如下方法:
所以从每一行中,你想提取m_oSupportedFields.之后的部分和之前 .Supported = , 以及 = 之后的部分.您只想忽略 = 之前的空格, 但 = 之后的任何空格.
您的正则表达式将是:^m_oSupportedFields\.([\w\.]+)\.Supported *=\s*(EnumSupported\.\w+);
省略 ^如果您不想要求字符串从一行的开头开始。
使用 C#,您可以像这样访问匹配组:
using System.Text.RegularExpressions;
string regex = @"^m_oSupportedFields\.([\w\.]+)\.Supported *=\s*(EnumSupported\.\w+);";
string input = @"m_oSupportedFields.Personal.DOB.Day.Supported=EnumSupported.Supported";
foreach (Match m in Regex.Matches(input, regex))
{
Console.WriteLine(m.Captures[0].ToString());
Console.WriteLine(m.Captures[1].ToString());
}
// Console:
// Personal.DOB.Day
// EnumSupported.Supported
