簡體   English   中英

如何編寫正則表達式以從連接字符串中獲取零件?

[英]How to write regular expression to get parts from connection string?

如何編寫正則表達式以從中提取元數據,提供程序,提供程序連接字符串的內容

 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

不假定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"]);

正則表達式,例如:

^(res:[^;]+);provider=([^;]+);provider\sconnection\sstring=\"(.+)\"$

給您3個捕獲組,提供您需要的部分。

實時示例: http//rextester.com/rundotnet?code = JRGSO74516

您可以使用命名捕獲組為每個類別定義模式,.Net RegEx匹配支持此模式。 有關命名捕獲組的說明,請參見此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM