等同于 XPath 中的 (.*)
Equivalent to (.*) in XPath
我正在尝试从 XPath 中的正则表达式中找到与 (.*) 等效的项。现在这是我目前拥有的:
我有一个 HTML a-tag,带有指向 world/nl44/town/ANYNUMBER
的 href,其中 ANYNBUMBER
所以它可以是例如: world/nl44/town/12345
和 world/nl44/town/1232
是替换为随机值(我只需要a标签的值)。
查询看起来像这样:
$elements = $xpath->query('//a[@href="/world/nl44/town/ANYNUMBER"]');
当然 ANYNUMBER
替换为 (.*)
的 XPath 等价物
总结一下:
<a href="/world/nl44/town/12344">Something</a>
<- 这就是我的 a 的样子,其中 12344 可以是任何数字,我只需要标签之间的值,所以在这个例子中我希望它 return "Something".
我该怎么做?
您可以使用 starts-with()
function:
//a[starts-with(@href, "/world/nl44/town/")]
XPath 2.0
XPath 2.0 有 String Functions that Use Pattern Matching,其中 .*
本身可以工作:
因此在 XPath 2.0 中,您可以使用:
//a[matches(@href, '/world/nl44/town/.*')]
XPath 1.0
XPath 1.0 不支持基于正则表达式的模式匹配,只支持基本的字符串函数。虽然 .*
没有直接等价,但有时可以使用 starts-with()
(see in this particular case, +1), contains()
, or the other XPath 1.0 String Functions to disregard parts of a string to achieve similar results to matching .*
. As another example, the start of a string can be disregarded via a clever combination of substring()
, string-length()
和字符串相等性检查,有效地实现类似 ends-with()
的功能。
我正在尝试从 XPath 中的正则表达式中找到与 (.*) 等效的项。现在这是我目前拥有的:
我有一个 HTML a-tag,带有指向 world/nl44/town/ANYNUMBER
的 href,其中 ANYNBUMBER
所以它可以是例如: world/nl44/town/12345
和 world/nl44/town/1232
是替换为随机值(我只需要a标签的值)。
查询看起来像这样:
$elements = $xpath->query('//a[@href="/world/nl44/town/ANYNUMBER"]');
当然 ANYNUMBER
替换为 (.*)
总结一下:
<a href="/world/nl44/town/12344">Something</a>
<- 这就是我的 a 的样子,其中 12344 可以是任何数字,我只需要标签之间的值,所以在这个例子中我希望它 return "Something".
我该怎么做?
您可以使用 starts-with()
function:
//a[starts-with(@href, "/world/nl44/town/")]
XPath 2.0
XPath 2.0 有 String Functions that Use Pattern Matching,其中 .*
本身可以工作:
因此在 XPath 2.0 中,您可以使用:
//a[matches(@href, '/world/nl44/town/.*')]
XPath 1.0
XPath 1.0 不支持基于正则表达式的模式匹配,只支持基本的字符串函数。虽然 .*
没有直接等价,但有时可以使用 starts-with()
(see contains()
, or the other XPath 1.0 String Functions to disregard parts of a string to achieve similar results to matching .*
. As another example, the start of a string can be disregarded via a clever combination of substring()
, string-length()
和字符串相等性检查,有效地实现类似 ends-with()
的功能。