簡體   English   中英

如何用正則表達式替換匹配的組值

[英]How to replace a matched group value with Regex

我想修改連接字符串中“數據源”組件的值。 我正在考慮以下解決方案:

使用此正則表達式模式:

"data source\=((\w|\-)+?\\{1}\w+?)\;"

我可以獲得以下字符串匹配項:

Match.Groups[0].Value = "data source=MY-PC\SQLEXPRESS;"
Match.Groups[1].Value = "MY-PC\SQLEXPRES"

因此,首先,我想在連接字符串中找到與“數據源=某物;”匹配的部分,其次,僅替換連接字符串中的“某物”。 怎么做?

如果您堅持用正則表達式替換,請注意C#無法修改生成的字符串,您需要獲取替換了所需部分的新字符串。

var connectionString = @"data source=MY-PC\SQLEXPRESS;";
var pattern = @"(data source=)((\w|\-)+?\\\w+?)\;";
var newConnectionString = Regex.Replace(connectionString, pattern, "$1" + "something");
Console.WriteLine(newConnectionString);

對於.NET中的大多數連接字符串類型,應該有一個對應的ConnectionStringBuilder類來處理這種事情。 您如何連接到數據庫?

只需更換它。

string dbSource = "data source=myserver\\sqlexpress";

int sLen = dbSource.IndexOf("=") + 1;
string getString = dbSource.Substring(sLen, dbSource.Length - sLen);

dbSource = dbSource.Replace(getString, "whatyouwantotoreplaceitwith");

您可以使用帶有'='字符的簡單string.split進一步拆分匹配項,或者如果您喜歡正則表達式,請參見MSDN Regex.Replace方法

暫無
暫無

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

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