繁体   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