首页 > 解决方案 > 使用 XSLT 从字符串中查找动态长度数

问题描述

我输入了如下的 XML

<?xml version = "1.0" encoding = "UTF-8"?>
  <root>
    <param>:22:/ABC/GID:50749612002 BOOK USER REF: 12311111112222 XYZ: DEF BK ID:3333 3333 JKL:MNN - VZXVXHFHF DETA ABC:DEF ORDERID:989796123456789.GKLT C:0006789 FASDFSF.FYRTY 53546475</param>
  </root>

需要帮助来使用 XSLT 提取 ORDERID。

标签: regexxsltxslt-2.0

解决方案


考虑将节点值提取到变量$param

<xsl:variable name="param">
    <xsl:value-of select="/root/param"/>
</xsl:variable>

现在您可以使用自 XSLT 2.0 起的函数replace来获取数字:

<xsl:value-of select="replace($param, '.*?ORDERID:(\d+)\.\w{4} .*', '$1')"/>

正则表达式.*?ORDERID:(\d+)\.\w{4} .*Regex101演示。


推荐阅读