【问题标题】:XPath - Find similar, but containing non-alphanumeric charactersXPath - 查找相似但包含非字母数字字符
【发布时间】:2020-09-23 17:24:34
【问题描述】:

我正在尝试从 xml 文档中搜索文本,其中删除了非 aplhanumeric 字符与输入文本匹配。例如:

要搜索的文本:“sometext”

<xml>
  <elem>sometext</elem>    <- match
  <elem>some text</elem>   <- match
  <elem>some.text</elem>   <- match
  <elem>someetext</elem>   <- no match
</xml>

这可以通过 xpath 实现吗?

【问题讨论】:

  • XPath 存在不同的版本,从 1999 年以来的 XPath 1.0 到 2017 年以来的 XPath 3.1。您可以使用哪个版本? XPath 2 及更高版本支持基于正则表达式的更强大的字符串操作。即使在 XPath 1 中它通常也是可行的,您只需要使用 translate 函数从 elem 中删除您不想包含的任何内容,例如对于那个简单的例子/xml/elem[translate(., ' .', '') = 'sometext']
  • 谢谢,翻译应该可以。如果您将其添加为答案,我会接受。

标签: xml xpath


【解决方案1】:

在 XPath 1 中,对于简单的要求,您可以使用 translate 函数来去除字符,例如/xml/elem[translate(., ' .', '') = 'sometext']。在 XPath 2 和更高版本中,您可以使用 replace 支持正则表达式,如果您需要处理的不仅仅是 ASCII 字母,例如 /xml/elem[replace(., '[^\p{L}\p{N}]+', '') = 'sometext'],它可能会更强大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 2010-12-27
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2016-10-29
    • 2017-07-05
    • 2016-05-19
    相关资源
    最近更新 更多