代码之家  ›  专栏  ›  技术社区  ›  IbrarMumtaz

使用正则表达式从字符串中提取数据

  •  0
  • IbrarMumtaz  · 技术社区  · 15 年前

    我需要一些帮助,使用正则表达式提取以下信息位。

    这是我的输入字符串“c:\yes”

    ********字符串开始处和介于两者之间但不在结尾处缺少字符= 看起来怪怪的上标L.*。**

    我需要将“c:\”提取到一个字符串中,将“yes”提取到另一个字符串中。

    事先谢谢。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Konrad Rudolph    15 年前

    以下正则表达式返回 C:\ 在第一个捕获组和第二个捕获组中:

     ^(\w:\\)(.*)$
    

    这是在找:一个完整的字符串( ^…$ )从一封信开始( \w 虽然,虽然 [a-z] 可能对Windows驱动器号更准确),然后 :\ .剩下的全部( .* )在第二组中捕获。

    注意,这不适用于UNC路径。如果使用路径,最好不要使用字符串和正则表达式,而是使用 System.IO . 在那里找到的类已经提供了您想要的功能。

        2
  •  3
  •   Alec    15 年前

    我不会为此而费心使用正则表达式。太多的工作,我很可能会搞砸。

    var x = @"C:\Yes";
    
    var root = Path.GetPathRoot(x);  // => @"C:\"
    var file = Path.GetFileName(x);  // => "Yes"
    
        3
  •  0
  •   skalb    15 年前
    Regex r = new Regex("([A-Z]:\\)([A-Za-z]+)");
    Match m = r.Match(@"C:\");
    
    string val1 = m.Groups[0];
    string val2 = m.Groups[1];