如何使用regex在数据连接中获取密码值

如何使用regex在数据连接中获取密码值,regex,Regex,我需要使用正则表达式从db连接字符串中获取密码值 这是我当前的正则表达式*;(?i)密码=([^;]*)。 只有在没有任何的情况下,这才有效字符 add key="myKey" value="Data Source=MyDataSource;Initial Catalog=MyDB;User ID=test-user;Password=pA&-pass; unicode=True" 但如果有,则失败字符 add key="myKey" value="Data Source=MyData

我需要使用正则表达式从db连接字符串中获取密码值

这是我当前的正则表达式
*;(?i)密码=([^;]*)
。 只有在没有任何
的情况下,这才有效字符

add key="myKey" value="Data Source=MyDataSource;Initial Catalog=MyDB;User ID=test-user;Password=pA&-pass; unicode=True"
但如果有
,则失败字符

add key="myKey" value="Data Source=MyDataSource;Initial Catalog=MyDB;User ID=test-user;Password=pass>; unicode=True"
简明的 因为有人可以创建一个密码,比如
,所以你的代码总是有办法破解的;密码=
,这样您的字符串实际上是
;密码=;密码=

假设这是不可能的(并且假设某人不可能使用类似的变体,例如密码的以下部分格式
;s=
,其中
s
是任何单词或空格字符),这应该对您有效


密码

输出
解释

  • (?很好,即使密码是连接字符串的最后一个属性,也是匹配的。谢谢您,先生。我会让您知道这是否有效。;password=;password=;有可能发生这种情况。@istudent,如果您想知道
    ;password=
    (包括它)之前的所有内容您可以使用
    *;Password=
    而不是
    (?)?
    
    (?<=;Password=)(?:(?!;[\w ]+=).)*
    
    add key="myKey" value="Data Source=MyDataSource;Initial Catalog=MyDB;User ID=test-user;Password=pA&-pass; unicode=True"
    add key="myKey" value="Data Source=MyDataSource;Initial Catalog=MyDB;User ID=test-user;Password=pass&gt;; unicode=True"
    
    pA&-pass
    pass&gt;