如何使用正则表达式提取字符串中的值

时间:2016-05-12 01:32:40

标签: c# regex

我有一个看起来像的字符串:

  

(服务= [MyCar]及(类型= [新闻] |类型= [综述]))

我需要获取Type的值,可以有1种类型或多种类型。

我目前的正则表达式是:

/Type=[(News|Review|Video)]*/g

它不会返回值,而是返回“Type =”

3 个答案:

答案 0 :(得分:2)

方括号[]在正则表达式中有特殊含义,因此需要对它们进行转义:

Type=\[(News|Review|Video)\]

比较this

this

在第一种情况下,您实际上是将(News|RviVdo)列表中的单个字符与[(News|Review|Video)]匹配

对于每场比赛,您会在Group[1]

中找到您要查找的文字

答案 1 :(得分:1)

使用MatchCollection并在方括号[]前加上反斜杠\

        string input = "(Service=[MyCar]&(Type=[News]|Type=[Review]))";

        string pattern = @"Type=\[(News|Review|Video)\]";

        MatchCollection matches = Regex.Matches(input, pattern);
        foreach(Match match in matches)
        {
            foreach(Group group in match.Groups)
            {
                Console.WriteLine(group);
            }
        }

答案 2 :(得分:1)

像这样的模式

  

类型= [(\ W *)]

会给你这些小组。您可以查看表达式here。您也可以在dotnetfiddle

测试此C#代码
using System;
using System.Text.RegularExpressions;

public class Program
{
    public static void Main()
    {
        string input = "(Service=[CarSales]&(Type=[News]|Type=[Review]))";

        string pattern = @"Type=\[(\w*)\]";

        MatchCollection matches = Regex.Matches(input, pattern);


        foreach(Match match in matches)
        {
            Console.WriteLine(match.Groups[1].Value);
        }


    }
} 

您可以在MSDN“Match.Groups Property”页面上找到有关组和索引的一些信息。