如何编写正则表达式来提取元数据,提供者,提供者连接字符串的内容 来自
metadata=res://*/ent.csdl|res://*/ent.ssdl|res://*/ent.msl;provider=System.Data.SqlClient;provider connection string="Data Source=1.1.1.1;Initial Catalog={0};Persist Security Info=True;User ID=user;Password=pass;MultipleActiveResultSets=True"
我的意思是,我想得到
元数据: res://*/ent.csdl|res://*/ent.ssdl|res://*/ent.msl
提供商: System.Data.SqlClient
提供商连接字符串: Data Source=1.1.1.1;Initial Catalog={0};Persist Security Info=True;User ID=user;Password=pass;MultipleActiveResultSets=True
答案 0 :(得分:5)
不假设ConnString的任何特定顺序:
var connString = @"metadata=res://*/ent.csdl|res://*/ent.ssdl|res://*/ent.msl;provider=System.Data.SqlClient;provider connection string=""Data Source=1.1.1.1;Initial Catalog={0};Persist Security Info=True;User ID=user;Password=pass;MultipleActiveResultSets=True""";
Regex metaRegex = new Regex(@"metadata=(?<metadata>[^;]+)");
Regex connRegex = new Regex(@"provider\sconnection\sstring=""(?<conn>[^""]+)");
Regex providerRegex = new Regex(@"provider=(?<provider>[^;]+)");
Console.WriteLine("MetaData: " + metaRegex.Match(connString).Groups["metadata"]);
Console.WriteLine("Connection String: " + connRegex.Match(connString).Groups["conn"]);
Console.WriteLine("Provider: " + providerRegex.Match(connString).Groups["provider"]);
答案 1 :(得分:1)
正则表达式如:
^(res:[^;]+);provider=([^;]+);provider\sconnection\sstring=\"(.+)\"$
为您提供3个捕获组,提供您需要的部分。
答案 2 :(得分:0)
您可以使用命名捕获组来定义每个类别的模式,这些模式由.Net RegEx匹配支持。有关命名捕获组的说明,请参阅here。