substring-after()用于截取分隔符后的字符串,如substring-after("apple-banana-cherry", "-")返回”banana-cherry”;与substring-before()区别在于前者取分隔符后部分,后者取前部分;若分隔符不存在则返回空字符串,需结合string-length()等函数处理;实际应用如提取商品标题中“-”后的名称或URL中“//”与“/”之间的域名。
XPath 的
substring-after()
函数用于从字符串中截取指定分隔符之后的部分。简单来说,它会找到字符串中第一个出现的分隔符,然后返回分隔符后面的所有字符。
如何使用 XPath 的 substring-after() 函数进行截取?
substring-after(string, substring)
其中:
-
string
:要进行截取的字符串。
-
substring
:分隔符字符串。
举个例子,假设我们有这样一个字符串:”apple-banana-cherry”,我们想截取第一个 “-” 之后的内容,那么 XPath 表达式就是:
substring-after("apple-banana-cherry", "-")
结果会是 “banana-cherry”。
XPath 中 substring-after() 函数与 substring-before() 函数的区别是什么?
substring-after()
截取的是分隔符 之后 的部分,而
substring-before()
截取的是分隔符 之前 的部分。 就像切蛋糕,
substring-after()
拿走的是切口右边的部分,
substring-before()
拿走的是切口左边的部分。
比如,对于同一个字符串 “apple-banana-cherry” 和分隔符 “-“,
-
substring-after("apple-banana-cherry", "-")
的结果是 “banana-cherry”。
-
substring-before("apple-banana-cherry", "-")
的结果是 “apple”。
理解它们的区别,才能更准确地从 XML 或 HTML 文档中提取所需的数据。 如果需要截取多个分隔符后的内容,可能需要结合其他 XPath 函数,例如
substring-after()
嵌套使用,或者使用更复杂的表达式。
如何处理 substring-after() 函数找不到分隔符的情况?
如果
substring-after()
函数在目标字符串中找不到指定的分隔符,它会返回空字符串 “”。 这一点很重要,因为在编写 XPath 表达式时,需要考虑到这种情况,避免程序出现意料之外的错误。
例如,如果我们在字符串 “apple” 中查找分隔符 “-“,XPath 表达式为:
substring-after("apple", "-")
结果会是 “” (空字符串)。
在实际应用中,可以通过
string-length()
函数判断结果是否为空字符串,从而进行相应的处理。 例如,可以使用
if
语句(XPath 2.0 及以上版本支持)或
choose
语句(如果使用 XSLT)来处理这种情况。
substring-after() 函数在实际网页数据抓取中的应用案例?
假设我们正在抓取一个电商网站的商品信息,商品的标题格式是 “品牌名称 – 商品名称”。 我们想提取商品名称,可以使用
substring-after()
函数。
例如,如果商品的标题是 “Apple – iPhone 13″,那么 XPath 表达式可以是:
substring-after(//h1[@class='product-title']/text(), " - ")
这个表达式首先通过
//h1[@class='product-title']/text()
找到商品标题的文本节点,然后使用
substring-after()
函数截取 ” – ” 之后的内容,得到 “iPhone 13″。
另一个例子,假设我们有一个 URL 列表,我们想提取域名。 URL 的格式是 “https://www.php.cn/link/4fc147e998bc303d0f94b6239b7b1449“。 XPath 表达式可以是:
substring-before(substring-after(//a/@href, "//"), "/")
这个表达式首先使用
substring-after(//a/@href, "//")
截取 “//” 之后的内容,得到 “www.example.com/path/to/resource”,然后使用
substring-before(..., "/")
截取第一个 “/” 之前的内容,得到 “www.example.com”。
这些只是简单的例子,实际应用中可能需要根据具体情况调整 XPath 表达式。 重要的是理解
substring-after()
函数的原理和用法,并结合其他 XPath 函数灵活运用。
评论(已关闭)
评论已关闭