我有一个看起来像的字符串:
(服务= [MyCar]及(类型= [新闻] |类型= [综述]))
我需要获取Type的值,可以有1种类型或多种类型。
我目前的正则表达式是:
/Type=[(News|Review|Video)]*/g
它不会返回值,而是返回“Type =”
答案 0 :(得分:2)
方括号[]
在正则表达式中有特殊含义,因此需要对它们进行转义:
Type=\[(News|Review|Video)\]
比较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”页面上找到有关组和索引的一些信息。