抓住''使用正则表达式

本文关键字:正则表达式 抓住 | 更新日期: 2023-09-27 18:08:42

我有一个问题,我认为自己适合使用正则表达式,但是我不确定所有的语法是如何为我的特殊情况工作的。我有一个字符串,它总是以Company'user的形式存在我只想抓取'后面的字符串但是我不想包含'

我的尝试是:

var user = Regex.Match(userName,@"'*").ToString();

但是这只产生空字符串。如何做到这一点?

抓住''使用正则表达式

如果您使用Substring方法,您可以轻松地完成此操作(并且以更可读的方式)。

根据注释的建议,以下内容可以满足您的目的:

userName.Substring(userName.IndexOf('''')+1)

以下是来自MSDN的子字符串的更多信息:http://msdn.microsoft.com/en-us/library/aka44szs(v=vs.110).aspx

提供第三种方法(为简洁起见省略了错误处理):

var user = userName.Split('''')[1];

用正则表达式求解:

var user = Regex.Match(userName, @"(?<='').*").ToString();

(?<='')是一个查找,它匹配字符串的'部分,但在最终匹配中不捕获它。

然而,我同意@MatthewWatson使用Split的答案是理想的,如果你不需要regex解决方案。

var m = Regex.Match(@"Company'User", @"[^'']+''(.+)");
if (m.Groups.Count > 1)
{
    var user = m.Groups[1].Value;
}

我将这样解析它:

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"
}