在微软的帮助文档中有个分析URL的正则表达式的例子。如:
String Extension(String url) 
{
     Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/",
         RegexOptions.Compiled);
     return r.Match(url).Result("${proto}${port}"); 
}
但是我对正则表达式不是很清楚,请帮我仿照上面写一个分析以下字符串的正则表达式
server=localhost,123;user id=sa;password=123456
我就是想要仿照上面的例子提取这个字符串中的以下数据
localhost
123
sa
123456谢谢!

解决方案 »

  1.   

    请问是不是这样写:
    @"server=<host>,<port>;user id=<username>;password=<password>"
      

  2.   

    linuxyf(率人哥哥) ,用什么方式?你是说直接用string.Substring和string.IndexOf配合来取?哪样好些呢,我觉得可能正则表达式可能好些。所以才想到用正则表达式。
      

  3.   

    可以用string.Split( new char[] {';'} )分隔,在用'='分隔name和value
    当然用正则表达式也可以
      

  4.   

    试试这个:@"Server=[\s]*(?<serverName>[^,]+)((,(?<port>\d+))|);user[\s]+id=(?<user>[^;]+);password=(?<password>[^/s]+)"
      

  5.   

    另外,dk385(大康)大哥,再问你一下:
    ((,(?<port>\d+))|)这个什么意思?尤其是其中的|,不知道加那个是什么意思?
    另外:
    password=(?<password>[^/s]+),我认为应该是
    password=(?<password>[^\s]+) 这样哟。\s表示非空字符呀。[^/s]不知道什么意思。谢谢!
    另外,你有QQ或MSN吗,谢谢!
      

  6.   

    dk385(大康),另外,我试了,如果user id或password空的话,即:
    server=localhost,123;user id=sa;password=
    匹配将失败,请问如何解决这点,就是允许user id和password为空字符串。
      

  7.   

    ((,(?<port>\d+))|)这个是为了没有端口号时也可以匹配.
    如果允许user id或password空的话改为:@"Server=[\s]*(?<serverName>[^,]+)((,(?<port>\d+))|);user[\s]+id=(?<user>[^;]*);password=(?<password>[^\s]*)"就好