首页 > 解决方案 > 查找与集合中的模式匹配的所有记录

问题描述

我一直在努力解决这个问题。我需要从字段包含“[”+任意数字+“]”的集合中提取所有记录。基本上是 [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 混合使用。

标签: c#regex

解决方案


你对正则表达式是对的,它们在这里看起来很合适。

使用模式\[\d+\]

解释:

\[-[逐层匹配

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

\]]-从字面上匹配

代码中的用法:

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

推荐阅读