Regex,用于查找和替换连接字符串中的SQL Server用户名和密码

本文关键字:Server SQL 用户 密码 字符串 用于 查找 替换 连接 Regex | 更新日期: 2023-09-27 17:59:27

我们刚刚更改了2个ID的MS SQL数据库密码。我有50多个asp.net web应用程序在数据库中运行,它们都需要更新连接字符串。有没有一个方便的regex可以用来查找服务器ID、用户名和密码?

这是一个很长的故事,但我需要能够匹配这3个元素,并且连接字符串的格式不完全相同(有些字符串在用户名之前有密码,反之亦然)。

这是我们的一个连接字符串的例子:

Data Source=dbserver;Initial Catalog=HOL;Persist Security Info=True;User ID=username;Password=password

我已经从正则表达式中尝试过了,但我真的是regex的新手。

'b(?:password'W+(?:'w+'W+){1,6}?user|user'W+(?:'w+'W+){1,6}?password)'b

编辑:我有一个可以使用的查找和替换工具(fnr.exe),我只需要一个正则表达式来查找字符串。。。

Regex,用于查找和替换连接字符串中的SQL Server用户名和密码

以下是用于匹配的单独正则表达式

  • 数据源

    'bData'hSource='w+'b

  • 用户ID

    'bUser'hID='w+'b

  • 密码

    'bPassword='w+'b

您可以将它们组合如下(类似于您提供的示例):

'b(?:(User'hID='w+);(Password='w+)|(Password='w+);(User'hID='w+))'b

演示:https://regex101.com/r/bT3yI1/1

以下Regex应该会有所帮助:

/;?(Data Source|User ID|Password)=((?:&(?:[a-z]+|#[0-9]+);|[^;]){0,})/gi

作为奖励,这也将捕获HTML实体,例如&

测试时间:https://regex101.com/r/vE2tT0/2

如果你只需要做一次,我建议你只运行连续搜索并替换数据源('bData'hSource='w+'b)用户id('bUser'hID='w+'b)和密码('bPassword='w+'b)。

编写一个匹配所有可能组合的正则表达式需要付出更多的努力。