【问题标题】:Reg Expression in C#C# 中的正则表达式
【发布时间】:2009-10-27 09:29:21
【问题描述】:

我给出了上面的字符串,我想从那个字符串中获取服务器IP地址、DB1、uid和****这些值。

【问题讨论】:

  • 至少告诉我们你已经得到了什么。否则这个问题看起来像“嘿,所以,为我解决我的任务”

标签: c# .net regex connection-string


【解决方案1】:

不要使用正则表达式。

使用SqlConnectionStringBuilder 解析连接字符串,然后从中访问密钥。

var b = new SqlConnectionStringBuilder(myConnectionString);
var dataSource = b["Data Source"]; 
// etc.

更容易、更易于维护和更可靠。

【讨论】:

    【解决方案2】:
    data source=([^;]*);Initial Catalog=([^;]*);user id=([^;]*);Password=([^;"]*)
    

    然后您将在第 1 到第 4 组中进行匹配。如果您觉得无聊,您可以命名这些组;有助于代码的可读性,尽管很少有助于正则表达式本身的可读性。

    【讨论】:

    • +1,因为 subramani 只说谢谢,从未听说过接受或投票赞成
    【解决方案3】:

    如果 BCL 可以为您解析连接字符串,则无需解析:

    var builder = new OleDbConnectionStringBuilder(connectionString);
    var provider = builder.Provider;
    var dataSource = builder.DataSource;
    var initialCatalog = builder["Initial Catalog"];
    var userID = builder["User ID"];
    var password = builder["Password"];
    

    请注意,对于 OLE DB 连接字符串,只有标准的跨提供者属性具有强类型属性名称,其余的都通过索引器访问。

    【讨论】:

      【解决方案4】:

      使用';'分割值不是更容易吗char 然后用 '=' char 分割每个项目?

      这样你的连接字符串可以被用户编辑,甚至可以改变项目顺序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多