繁体   English   中英

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

[英]Regular expression for tokenizing connection string

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

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

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

(?<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+)?)

如果不立即跟数字,则分号和逗号是分隔符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM