您的位置:首页 > 其它

使用正则表达式抽取字符串中数据的样例

2008-12-31 10:56 399 查看
private Regex regex = new Regex("(?<VarName1>[^//s]+)=/"(?<VarName2>[^/"]+)/"", RegexOptions.Compiled);
private RegistryPermission[] GetPermission(string permissionList)
{
string[] substring = permissionList.Split('|');
ArrayList al = new ArrayList();
for (int i = 0; i < substring.Length; i++)
{
MatchCollection matches = regex.Matches(substring[i]);
string user = null;
foreach(Match match in matches)
{
switch(match.Groups["VarName1"].Value.ToUpper())
{
case "USER":
if(user != null)
user += @"/" + match.Groups["VarName2"].Value;
else
user = match.Groups["VarName2"].Value;
break;
case "DOMAIN":
user = match.Groups["VarName2"].Value;
break;
default:
RegistryPermission permission = new RegistryPermission();
permission.type = match.Groups["VarName2"].Value.ToUpper() == "YES" ? AccessControlType.Allow : AccessControlType.Deny;
permission.user = user;
switch (match.Groups["VarName1"].Value.ToUpper())
{
case "CREATESUBKEYS":
permission.rights = RegistryRights.CreateSubKey;
break;
case "ENUMERATESUBKEYS":
permission.rights = RegistryRights.EnumerateSubKeys;
break;
case "NOTIFY":
permission.rights = RegistryRights.Notify;
break;
case "CREATELINK":
permission.rights = RegistryRights.CreateLink;
break;

case "DELETE":
permission.rights = RegistryRights.Delete;
break;
case "READPERMISSION":
permission.rights = RegistryRights.ReadPermissions;
break;
case "CHANGEPERMISSION":
permission.rights = RegistryRights.ChangePermissions;
break;
case "TAKEOWNERSHIP":
permission.rights = RegistryRights.TakeOwnership;
break;
case "GENERICALL":
permission.rights = RegistryRights.FullControl;
break;

default:
new Exception("Unknown registry type;" + match.Groups["VarName1"].Value);
break;
}
al.Add(permission);
break;
}
}
}

return base.ConvertArrayListToObjArray<RegistryPermission>(al); ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐