以下算法查找<password>
(XML格式的字符串)字段中具有info
条目的所有文档
db.getCollection('products').find({info:{$regex: /<password>/}});
但passwordRecords
有0个元素。我在哪里弄错了?在Mongo中更新数据是正确的方法吗?
答案 0 :(得分:2)
这里有一些事情需要考虑。
/.../
)/
是您想要在输入字符串中匹配的斜杠,则它应该采用模式(?si)<([^\s<]*password[^\s<]*)>.*?</\1>
模式匹配,并替换为<$1></$1>
:Regex.Replace(r.info, @"(?si)<([^\s<]*password[^\s<]*)>.*?</\1>", "<$1></$1>");
我建议的模式包含两件感兴趣的东西:
(?si)
- DOTALL(单线)模式也强制.
匹配换行符,并且还启用不区分大小写的匹配模式([^\s<]*password[^\s<]*)
- 捕获包含password
的节点名称(节点只有名称,没有属性).*?
- 匹配任何0+个字符,尽可能少到下一个必需的子模式</\1>
- 匹配与组1匹配的最近对应标记。因此,这不会匹配任何嵌套标记。 请参阅regex demo