查找与集合中的模式匹配的所有记录

时间:2019-05-14 17:31:44

标签: c# regex

我一直在努力奋斗。我需要从一个字段包含“ [“ +任何数字+”]“的集合中提取所有记录。基本上是[0],[1],[2]等。如果在方括号中包含数字,则需要它。我尝试过:

allvalues.Where(p => p.Path.Contains(property.Path) && p.Path.Contains(p.Path.Split('[', ']')[1])

但是如果不存在,我会得到可怕的错误

  

索引超出范围

我不能使用以下内容:

allvalues.Where(p => p.Path.Contains(property.Path) && p.Path.Contains('[') 

因为有些路径包含“ []”,但我不想要这些。

我考虑过Regex.IsMatch,但是由于找不到任何此类示例,因此我假设您无法将其与lambda混合使用。

1 个答案:

答案 0 :(得分:4)

您对正则表达式说的很对,在这里看起来很合适。

使用模式\[\d+\]

说明:

\[-初步匹配[

\d+-匹配一个或多个数字硬币

\]-从字面上匹配]

代码中的用法:

allvalues
  .Where(p => p.Path.Contains(property.Path) && Regex.Match(p.Path, @"\[\d+\]").Success);