我有一个问题,我认为有助于使用正则表达式,但我不确定所有语法如何适用于我的特定情况。我有一个字符串,其格式始终为Company\user
我只想在\
之后抓取字符串但是我不想包含\
我的尝试是这样的:
var user = Regex.Match(userName,@"\*").ToString();
但是这只产生了空字符串。怎么做到这一点?
答案 0 :(得分:3)
如果您使用Substring方法,您可以轻松完成此任务(并以更易读的方式)。
正如评论所示,以下内容符合您的目的:
userName.Substring(userName.IndexOf('\\')+1)
以下是有关MSDN子字符串的更多信息:http://msdn.microsoft.com/en-us/library/aka44szs(v=vs.110).aspx
答案 1 :(得分:2)
在Regex中解决它:
var user = Regex.Match(userName, @"(?<=\\).*").ToString();
(?<=\\)
是一个与字符串的\
部分匹配的lookbehind,但在最终匹配中不捕获它。
但我同意@ MatthewWatson使用Split的答案是理想的,如果你不需要正则表达式解决方案。
答案 2 :(得分:2)
只是为了提供第三种方法(为简洁省略了错误处理!):
var user = userName.Split('\\')[1];
答案 3 :(得分:1)
var m = Regex.Match(@"Company\User", @"[^\\]+\\(.+)");
if (m.Groups.Count > 1)
{
var user = m.Groups[1].Value;
}
答案 4 :(得分:1)
我会用这种方式解析它:
var text = "Company\\Luke Skywalker";
var regex = new Regex(
"^Company\\\\(?<user>.*?)$",
RegexOptions.IgnoreCase | RegexOptions.Singleline
);
var matches = regex.Match(text);
if (matches.Success) {
var user = matches.Groups["user"].Value;
// "Luke Skywalker"
}