- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 VB.NET 应用程序中有一个异常处理程序方法,该方法从发生的最后一个异常中检索详细信息,并将该信息通过电子邮件发送给我们的帮助台(我)以进行诊断和故障排除。一个可能的异常实例是当应用程序尝试在我们的数据库服务器之一上连接或执行某些 SQL 时。在这些情况下 - 特别是当异常是因为连接失败时 - 我想查看用于确保其格式正确的数据库连接字符串。
但是,数据库连接字符串通常包含用户的 ID 和密码,我想在字符串中屏蔽密码。然而,挑战在于我们连接到多种数据库类型(例如 PostgreSQL、MySQL、SQLite、MS Access 等),并且根据数据库的不同,连接字符串中可能有也可能没有密码。此外,连接字符串格式因提供商而异。
我对 RegEx 非常不熟悉,但是,使用 https://regexr.com/ ,我设法想出了以下似乎有时有效的正则表达式模式:(?<=;?[Pp][Aa][Ss][Ss].*=)(.*?)(?=;)|$
示例连接字符串如下所示:Host=SERVERNAME;Port=####;Database=DBNAME;Username=USERID;Password=MyPa$$Word;Integrated Security=False
上面的模式正确匹配 MyPa$$Word
如果按此顺序明确,则在字符串中,但如果我移动 Password
键/值对更接近连接字符串的开头,如下所示:Host=SERVERNAME;Port=9999;Password=MyPa$$Word;Database=DBNAME;Username=USERID;Integrated Security=False
然后它匹配 MyPa$$Word
, DBNAME
, 和 USERID
.如果我将它移动到字符串的末尾:Host=SERVERNAME;Port=9999;Database=DBNAME;Username=USERID;Integrated Security=False;Password=MyPa$$Word
该模式没有找到任何匹配项。只是为了确保带有空格的键/值( Integrated Security=False
)不会混淆模式,我从字符串中删除了它并得到了相同的结果。
因为连接字符串可以根据数据库类型、用户输入等以多种方式构建,所以我希望能够使用 RegEx 来查找(不区分大小写的)密码键/值对连接字符串,仅提取实际密码值,并将其替换为某些内容(例如 [HIDDEN]
)。我知道我可能只是做一个 String.Split(Convert.ToChar(";"))
在整个连接字符串上并检查每个键/值对,但如果可能的话,我更愿意使用 RegEx 来完成。
最佳答案
这样的事情可以工作:
((^|;)Password=)(.*?)(;|$)
$3
所以只需确保在执行替换时省略该捕获组。
关于regex - 使用 Positive LookAhead 和 LookBehind 屏蔽数据库连接字符串中的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58015807/
我有如下字符串: val:key 我可以使用 /^\w*/ 捕获“val”。 我现在如何获取“key”而不“:”符号? 谢谢 最佳答案 这个怎么样? /^(\w+):(\w+)$/ 或者,如果您只想捕
再次搜索相同模式时是否可以使用正则表达式找到重叠匹配项?我希望能够找到出现三次的匹配项。例如,bababa 在 babababab 中出现了 3 次: 巴巴布巴巴布 babababab 爸爸爸爸 这是
我正在尝试提出正则表达式 block ,该 block 将使用 JavaScript 从 cucumber 样本中提取表。 cucumber 样本如下 Feature: Sample Feature
这个问题已经有答案了: Reference - What does this regex mean? (1 个回答) 已关闭 7 年前。 我了解到lookahead正则表达式是这样的x(?=y)和意味
我的解析器生成器(使用 javaCC)有问题 我有这个错误: Warning: Choice conflict involving two expansions at line 119, c
我正在编写一个小型java程序来进行一些数据库清理,当它们与某些关键字出现在同一个句子中时,我需要从大文本 block 中提取日期,并且我遇到了一些奇怪的行为想不通。例如,以下正则表达式: "(?=.
我需要使用正则表达式来匹配一个字符串 holiding html 以拉出所有嵌套的跨度,我假设我假设有一种方法可以使用正则表达式来执行此操作,但整个上午都没有成功。 所以对于示例输入字符串
我最近开始研究使用 javacc 的语法分析器,其中一个字段是选项 one...我有如下代码: options { LOOKAHEAD=1; } PARSER_BEGIN(Calculator)
我无法将此正则表达式转换为 Golang 支持的内容。我能得到一些帮助吗?它最初来自 this SO question . ^(?=.{1,24}$)(?![_.])(?!.*[_.]{2})[a-z
我正在尝试制作两个匹配 URI 的正则表达式。这些 URI 的格式为:/foo/someVariableData 和 /foo/someVariableData/bar/someOtherVariab
我刚刚更详细地了解了这两个概念。我一直对 RegEx 很好,似乎我从未见过这 2 个零宽度断言的必要性。 我很确定我错了,但我不明白为什么需要这些结构。考虑这个例子: Match a 'q' whic
让我留下以下字符串列表,在 JavaScript (NodeJS) 中,我想一次应用一个正则表达式并替换 . 和 . 之间的哈希值,但我不想替换这个词,.style。或 .bundle. 或 .chu
我有以下正则表达式来验证字符串中的条件,我在在线正则表达式 validator 上编写了它,但是当我在 Java 代码中使用它时出现异常: "(^([a-z]{1,6})(?(?=(_))(([_])
我很难搞清楚如何识别某些文本,前提是它之前和之后都有特定的东西。任务是识别 AND、OR 和 NOT,但如果它们是单词的一部分则不是: 他们应该在这里被识别: x AND y (x)AND(y) NO
我有一串以逗号分隔的字符,需要拆分。不过,其中一些字符可能是逗号。例如: test = "a,b,c,d,,,e,f,g" 我知道(?
我正在尝试匹配 Java 中没有 .jsp/.jspx 扩展名的字符串,并且在负向先行模式方面遇到了很多困难。 给定一堆字符串: String string1 = "templateName"; St
我有以下TT.jj,如果我取消注释下面的SomethingElse部分,它会成功解析create create blahblah形式的语言> 或创建废话。但是,如果我注释掉下面的 SomethingE
我想创建一个可以识别字符串中的等号的正则表达式。唯一的条件是等号前面不能有以下字符:“”、“~”和“=”。它后面也不能跟这个字符“=”。我使用的正则表达式语句是这样的:(?~=])=(?=[^=])并
这应该很简单,但我是菜鸟,我一辈子也搞不懂。我正在尝试使用正则表达式来匹配特殊打开/关闭标签内的文本:[p2][/p2] 所以在这段文字中: apple [p2]banana[/p2] grape [
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 3 年前。 Improve this qu
我是一名优秀的程序员,十分优秀!