DOMXpath:提取字符串直到冒号

时间:2014-02-26 08:43:46

标签: xpath

我在这里有一些例子:

<p>
<font>Mortal Combat: A very good gamenbsp;</font>
</p>

<p>
<font>Call of Duty: Don't buy this game.</font>
</p>

<p>
<font>Street Fighter 2: Not the best game, but it's OK!</font>
</p>

到目前为止,我来了:

/p/font[text()="Mortal Combat" or text()="Street Fighter 2"]

我想只在匹配时提取,但我不希望在冒号:

之后提取任何内容

在此示例中,我希望的输出是:

Mortal Kombat

Street Fighter

我曾尝试使用previous-sibling做某事,但它没有用。

1 个答案:

答案 0 :(得分:3)

您可以在XPath 1.0中使用substring-before()

这会对你有用吗?

//p/font[substring-before(., ":")="Mortal Combat" or substring-before(., ":")="Street Fighter 2"]/text()

这不会输出子字符串,只是匹配具有其中一个子字符串的文本节点。

在表达式周围再次应用substring-before()只会得到1个结果。

substring-before(//p/font[substring-before(., ":")="Mortal Combat" or substring-before(., ":")="Street Fighter 2"]/text(), ":")
--> "Mortal Combat"

您必须循环匹配的文本节点,并使用编程语言应用substring-before()或子字符串提取。