用于在连接字符串中查找和替换SQL Server用户名和密码的正则表达式

时间:2015-06-24 09:09:02

标签: c# asp.net regex

我们刚刚更改了2个ID的MS SQL数据库密码。我有超过50个运行数据库的asp.net Web应用程序,它们都需要更新连接字符串。是否有一个方便的正则表达式,我可以用来搜索服务器ID,用户名和密码?

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

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

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

我已经从regular-expressions尝试了这个,但我真的是正则表达式的新手。

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

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

3 个答案:

答案 0 :(得分:1)

以下是匹配

的单独正则表达式
  • 数据来源

    \bData\hSource=\w+\b

  • 用户ID

    \bUser\hID=\w+\b

  • 密码

    \bPassword=\w+\b

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

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

DEMO:https://regex101.com/r/bT3yI1/1

答案 1 :(得分:0)

以下正则表达式应该有所帮助:

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

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

经过测试:https://regex101.com/r/vE2tT0/2

答案 2 :(得分:0)

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

编写一个匹配所有可能组合的正则表达式会更省力。