Regex获取多个筛选器

本文关键字:筛选 获取 Regex | 更新日期: 2023-09-27 17:58:17

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

代码:

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文件。

有人能帮我用这个正则表达式吗。

Regex获取多个筛选器

简单回答:您需要在包含ext变量的位置添加括号,这样解析器就知道可以匹配其中的任何选项。

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

更换

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

带有

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

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