【发布时间】:2017-11-07 07:53:03
【问题描述】:
如何在正则表达式中使用“contains”(“Contains”或“%like%”)?
我有一个正则表达式来匹配 XML 节点和确切的文本:
<([\w]+)[^>]*>sample<\/\1>
它会产生准确的节点名称,但我想像在 C# 和 SQL (%LIKE%) 中一样应用正则表达式。
文字:
<Part>this is sample part</Part>
<Remarks>this is sample remark</Remarks>
<Notes>this is sample notes</Notes>
<Desc>sample</Desc>
预期的正则表达式结果应该返回以上所有节点,但目前它只返回最后一个节点。
【问题讨论】:
-
作业工具错误。正则表达式不是 XML 解析器,也不可能。
-
为什么不使用 XPath?
//*[contains(text(), "sample")]/local-name() -
@WiktorStribiżew 谢谢,正在尝试使用 Xpath
-
关于 XML 部分的另一个注意事项:考虑一个文件,其中 XML 的格式不是很好的多行,而是所有节点都在一行中......或者类似地,一个 XML 节点内容跨越多行.如果你认为你在这两种情况下都有一个有效的正则表达式,让我们做一些嵌套:
"<Notes>this is <SubNote>i'm a hacky sample</SubNote> sample notes</Notes>". -
使用 xml linq 并使用包含字符串的 where 进行搜索。在使用 Regex 之前始终使用字符串方法。始终使用 eXmlDocument 类、XDocument 类、XmlReader 或 XmlSerialization 解析 xml。