正则表达式在第一次斜杠之前检索所有内容

时间:2010-03-11 15:50:35

标签: c# regex string

我需要一个正则表达式来基本上获取字符串的第一部分,之前第一个斜杠()。

例如以下内容:

  

C:\ MyFolder文件\ MyFile.zip

我需要的部分是“ C:

另一个例子:

  

somebucketname \ MyFolder文件\ MyFile.zip

我需要“ somebucketname

我还需要一个正则表达式来检索它的“右手”部分,所以在第一个斜杠之后的所有内容(不包括斜杠)。

例如

  

somebucketname \ MyFolder文件\ MyFile.zip

将返回

MyFolder中\ MyFile.zip

6 个答案:

答案 0 :(得分:4)

你不需要一个正则表达式(对于像这样的简单问题会产生太大的开销),试试这个:

yourString = yourString.Substring(0, yourString.IndexOf('\\'));

为了在第一次斜线之后找到所有东西,你可以这样做:

yourString = yourString.Substring(yourString.IndexOf('\\') + 1);

答案 1 :(得分:3)

使用.NET正则表达式引擎可以非常干净地处理此问题。使.NET正则表达式非常好的原因是能够使用命名组捕获。

使用命名组捕获允许您为您感兴趣的“捕获”正则表达式的每个部分定义一个名称,以便稍后可以引用它来获取其值。组捕获的语法是“(?xxSome Regex Expressionxx)。还要记住在项目中使用正则表达式时包含System.Text.RegularExpressions import语句。

享受!

//正则表达式

  string _regex = @"(?<first_part>[a-zA-Z:0-9]+)\\{1}(?<second_part>(.)+)";

  //Example 1
  {
    Match match = Regex.Match(@"C:\MyFolder\MyFile.zip", _regex, RegexOptions.IgnoreCase);
    string firstPart = match.Groups["first_part"].Captures[0].Value;
    string secondPart = match.Groups["second_part"].Captures[0].Value;
  }

  //Example 2
  {
    Match match = Regex.Match(@"somebucketname\MyFolder\MyFile.zip", _regex, RegexOptions.IgnoreCase);
    string firstPart = match.Groups["first_part"].Captures[0].Value;
    string secondPart = match.Groups["second_part"].Captures[0].Value;
   }

答案 2 :(得分:2)

你知道.NET的文件处理类可以更优雅地做到这一点,对吗?

例如,在上一个示例中,您可以执行以下操作:

FileInfo fi = new FileInfo(@"somebucketname\MyFolder\MyFile.zip");
string nameOnly = fi.Name;

你可以做的第一个例子:

FileInfo fi = new FileInfo(@"C:\MyFolder\MyFile.zip");
string driveOnly = fi.Root.Name.Replace(@"\", "");

答案 3 :(得分:1)

这匹配所有非\ chars

[^\\]*

答案 4 :(得分:0)

这是使用“贪婪”运算符'''...

的正则表达式解决方案
        var pattern = "^.*?\\\\";
        var m = Regex.Match("c:\\test\\gimmick.txt", pattern);
        MessageBox.Show(m.Captures[0].Value);

答案 5 :(得分:0)

在斜杠上拆分,然后获得第一项

words = s.Split('\\');
words[0]