正则表达式获得多个过滤器

时间:2016-07-21 18:59:51

标签: c# regex linq

我是Regex的新手并尝试使用.cs,.json等查找所有文件。 但是,我只获得1个文件扩展名,即只有1个过滤器值。

代码:

string ext = "json|cs|xml";
Regex RegEx = new Regex(@"<(Compile|Content|None) Include=\""([^\""]+." + ext + @")\""( /)?>",RegexOptions.IgnoreCase);
Match match = RegEx.Match(line); //Only takes json, does not take cs or xml

所以,这里只匹配json文件。

任何人都可以帮我解决这个正则表达式。

1 个答案:

答案 0 :(得分:0)

简短回答:您需要在包含 ext 变量的位置添加括号,因为解析器知道匹配任何这些选项。

目前你所拥有的是匹配任何不包含双引号的字符和字符串 json OR 字符串 cs xml 。通过添加额外的括号(如下所示),您可以告诉解析器匹配任何不包括双引号和您提供的任何扩展名的字符。

替换

<(Compile|Content|None) Include=\""([^\""]+." + ext + @")\""( /)?>

<(Compile|Content|None) Include=\""([^\""]+.(" + ext + @"))\""( /)?>

PS。我发现Expresso在调试正则表达式时非常有用。没有附属,只是使用了很多年。