使用c#在括号中提取字符串

时间:2017-12-09 13:51:18

标签: c# regex parentheses

我有一个字符串---TIMESTAMP Tue, 24 Oct 2017 02:11:56 -0400 [1508825516987]---

我希望获得[](即1508825516987

中的值

如何使用Regex获取值?

2 个答案:

答案 0 :(得分:2)

说明:

  • \[[是一个元字符,如果您想要按字面意思匹配,则需要进行转义。
  • (.*?):以非贪婪的方式匹配所有内容并捕获它。
  • \]]是一个元字符,如果您想要按字面意思匹配,则需要进行转义。

解释来源:Click

static void Main(string[] args)
{
    string txt = "---TIMESTAMP Tue, 24 Oct 2017 02:11:56 -0400 [1508825516987]---";

    Regex regex = new Regex(@"\[(.*?)\]", RegexOptions.IgnoreCase | RegexOptions.Singleline);
    Match match = regex.Match(txt);
    if (match.Success)
    {
        for (int i = 1; i < match.Groups.Count; i++)
        {
            String extract = match.Groups[i].ToString();
            Console.Write(extract.ToString());
        }
    }
    Console.ReadLine();
}

学习创建正则表达式的链接:

更新1:

Regex regex = new Regex(@"^---.*\[(.*?)\]", RegexOptions.IgnoreCase | RegexOptions.Singleline);
  • ^是字符串的开头
  • ---是你的(开始)角色
  • 。*是---和[
  • 之间的任何字符

答案 1 :(得分:0)

您可以使用以下代码获得您想要的结果!

 MatchCollection matches = Regex.Matches("---TIMESTAMP Tue, 24 Oct 2017 02:11:56 -0400 [1508825516987]---", @"\[(.*?)\]", RegexOptions.Singleline);
 Match mat = matches[0];
 string val = mat.Groups[1].Value.ToString();

而字符串 val 将包含您所需的值。