用于标记连接字符串的正则表达式

本文关键字:正则表达式 字符串 连接 用于 | 更新日期: 2023-09-27 18:36:58

我有 2 种不同类型的连接字符串(由于遗留原因,由于各种原因,我无法在任何地方修复,这些原因在这里无关紧要)。我需要将它们分解为键/值对。下面是示例连接字符串:

1. Server=SomeServer;Database=SomeDatabase;Something=Hello
2. Server=SomeServer,Database=SomeDatabase;Something=Hello
3. Server=SomeServer,1111;Database=SomeDatabase;Something=Hello 

对于前 2 种情况,我可以使用正则表达式:

(?<Key>[0-9A-z's]+)=(?<Val>[0-9A-z's,]+?[0-9A-z's]+)

对于第三个,我可以使用正则表达式:

(?<Key>[0-9A-z's]+)=(?<Val>[0-9A-z's]+?[0-9A-z's,]+)

我如何将其转换为适用于所有情况的正则表达式?

用于标记连接字符串的正则表达式

您可以使用以下正则表达式

(?<Key>[^=;]+)=(?<Val>[^;]+)

上面使用的是不定的字符类。 [^;]+将选择所有内容,直到遇到第一个;

演示(我已经删除了命名组进行测试。但是,它在 C# 中运行良好)

这是我

的建议。

(?<key>[^=;,]+)=(?<val>[^;,]+(,'d+)?)

分号是分隔符,逗号后面没有紧跟数字,则分号也是分隔符。