c# - 查找与集合中的模式匹配的所有记录
问题描述
我一直在努力解决这个问题。我需要从字段包含“[”+任意数字+“]”的集合中提取所有记录。基本上是 [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 混合使用。
解决方案
你对正则表达式是对的,它们在这里看起来很合适。
使用模式\[\d+\]
解释:
\[
-[
逐层匹配
\d+
- 匹配一个或多个数字
\]
]
-从字面上匹配
代码中的用法:
allvalues
.Where(p => p.Path.Contains(property.Path) && Regex.Match(p.Path, @"\[\d+\]").Success);
推荐阅读
- plsql - 在预期以下情况之一时遇到符号“INTO”
- c# - 用于在.net中选择范围的正则表达式
- java - 如何将图像存储到适合文件中
- kubernetes-ingress - 私有子网中的 EKS,公共子网中的负载均衡器
- c++ - 有没有办法在 C++ 中有效地复制包装的 JNI 对象?
- mongodb - 打印 MongoDB 集合数据 - GoLang,结果不如预期
- chef-infra - 需要澄清有关节点管理、Chef 中的角色
- lua - 将表拆分为 9
- javascript - 如何创建购物车以在其中添加多个商品而不刷新页面
- http-status-codes - 更正不更新文档的 PUT/POST 方法的 HTTP 状态代码