Url中的字符串string  str1 = http://localhost:80/service.svc/Units
string  str2 = http://localhost:80/service.svc/Units(1)
string  str3 = http://localhost:80/service.svc/Units(1)/Location
string  str4 = http://localhost:80/service.svc/Units(1)?$expand=Location
string  str5 = http://localhost:80/service.svc/Units?$expand=Location一“/”开始到“空”或“(”或“?”结尾的字符。取出Url中的 Units 字符串。求正则写法。

解决方案 »

  1.   


    string reg=@"/?(\w+)[(|?]*.*";
      

  2.   

                string tempStr = File.ReadAllText(@"C:\Users\M\Desktop\Test.txt", Encoding.GetEncoding("GB2312"));
                string pattern = @"(?<=http://([^/(]*/)+)[^\s(?/]+(?=[(?\s])";
                foreach (Match m in Regex.Matches(tempStr, pattern))
                {
                    string result = m.Value;//循环输出 Units
                }
      

  3.   

    感谢两位,我测试一下。其实下面的字符串只剩下这样了再截取也可以,前面都是都一样的。string str1 = /Units
    string str2 = /Units(1)
    string str3 = /Units(1)/Location
    string str4 = /Units(1)?$expand=Location
    string str5 = /Units?$expand=Location
      

  4.   


    可以说,将字符串简化一下,下面这样的字符串,应该使用什么正则获取字符串"Units"string str1 = "/Units"
    string str2 = "/Units(1)"
    string str3 = "/Units(1)/Location"
    string str4 = "/Units(1)?$expand=Location"
    string str5 = "/Units?$expand=Location"一“/”开始到“空”或“(”或“?”结尾的字符。
      

  5.   

     List<string> list = new List<string>() {
                    "/Units",
                    "/Units(1)",
                    "/Units(1)/Location",
                    "/Units(1)?$expand=Location",
                     "/Units?$expand=Location"
                };
                string pattern = @"(?<=/)[^\s(?/]+(?=(?>(?([(?/]).+|$)))";            string[] array = list.Select(a=>Regex.Match(a,pattern).Value).ToArray();
                /*
                 *  [0] "Units" string
                [1] "Units" string
                [2] "Units" string
                [3] "Units" string
                [4] "Units" string             */
      

  6.   


    多谢,Return_false我要截取的Url地址是一个,只是有五种情况。
      

  7.   

    svc/(\w+)
    如果是这样的话则用