我需要一个正则表达式来基本上获取字符串的第一部分,之前第一个斜杠()。
例如以下内容:
C:\ MyFolder文件\ MyFile.zip
我需要的部分是“ C:”
另一个例子:
somebucketname \ MyFolder文件\ MyFile.zip
我需要“ somebucketname ”
我还需要一个正则表达式来检索它的“右手”部分,所以在第一个斜杠之后的所有内容(不包括斜杠)。
例如
somebucketname \ MyFolder文件\ MyFile.zip
将返回
MyFolder中\ MyFile.zip
答案 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]