Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 链接不同大小内容的方法_Regex_Xslt 2.0 - Fatal编程技术网

Regex 链接不同大小内容的方法

Regex 链接不同大小内容的方法,regex,xslt-2.0,Regex,Xslt 2.0,我有以下xml案例 案例1: <tertiaryie level="1">application filing, 11.112</tertiaryie> 申请备案,11.112 案例2: <tertiaryie level="1">application filing, 1.112</tertiaryie> 申请备案,1.112 当我应用下面的正则表达式时 <xsl:stylesheet version="2.0" xmlns

我有以下xml案例

案例1:

<tertiaryie level="1">application filing, 11.112</tertiaryie>
申请备案,11.112
案例2:

<tertiaryie level="1">application filing, 1.112</tertiaryie>
申请备案,1.112
当我应用下面的正则表达式时

    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="text()">
    <xsl:analyze-string select="." regex="(([Cc]hapter)\s(\d+))">
      <xsl:matching-substring>
        <a href="{concat('er:#AHK_CH_',regex-group(3))}">
          <xsl:value-of select="."/>
        </a>
      </xsl:matching-substring>
      <xsl:non-matching-substring>
        <xsl:analyze-string select="." regex="([0-9])\.([0-9]+)">
          <xsl:matching-substring>
            <a
              href="{concat('er:#AHK_CH_',format-number(number(regex-group(1)),'00'),'/P',format-number(number(regex-group(1)),'00'),'-',regex-group(2))}">
              <xsl:value-of select="."/>
            </a>
          </xsl:matching-substring>
          <xsl:non-matching-substring>
            <xsl:value-of select="."/>
          </xsl:non-matching-substring>
        </xsl:analyze-string>
      </xsl:non-matching-substring>
    </xsl:analyze-string>
  </xsl:template>

</xsl:stylesheet>

我得到的结果如下。 案例1:

申请归档,1
案例2:

application filing, <a href="er:#CHK_CH_01/P01-112">1.112</a>
申请归档,
正则表达式在第二种情况下可以正常工作,但在第一种情况下不行。对于第一种情况,数字1被修剪掉,出现在锚定标记之前。请让我知道如何使输出如下。我需要一个模板,检查任何一个条件,并给出输出。这里案例2的输出是正确的

application filing, <a href="er:#CHK_CH_11/P11-112">11.112</a>
申请归档,

谢谢

只需调整您的正则表达式:

<xsl:analyze-string select="." regex="([0-9]+)\.([0-9]+)">

我已将您的问题重新标记为
xslt-2.0
(而不是
xslt-1.0
),因为使用了xslt 1.0中不可用的
指令。
<xsl:analyze-string select="." regex="([0-9]+)\.([0-9]+)">