Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 为什么这会为正则表达式组(1)返回一个值?_Regex_Xslt_Xslt 2.0_Saxon - Fatal编程技术网

Regex 为什么这会为正则表达式组(1)返回一个值?

Regex 为什么这会为正则表达式组(1)返回一个值?,regex,xslt,xslt-2.0,saxon,Regex,Xslt,Xslt 2.0,Saxon,我希望以下代码中的前两个正则表达式组值为空(对其他人的代码进行故障排除): <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl" ex

我希望以下代码中的前两个正则表达式组值为空(对其他人的代码进行故障排除):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xd="http://www.oxygenxml.com/ns/doc/xsl"
  exclude-result-prefixes="xs xd"
  version="2.0">

  <xsl:output method="text"/>

  <xsl:template match="/">
    <xsl:analyze-string select="'1949'" regex="([0-9]{{1,2}})?\s?([A-Z]{{1}}[a-z]{{1,8}}\.?)?\s?([0-9]{{4}})">
      <xsl:matching-substring>
        <xsl:text>regex-group(1)=</xsl:text><xsl:value-of select="regex-group(1)"/><xsl:text>&#xd;</xsl:text>
        <xsl:text>regex-group(2)=</xsl:text><xsl:value-of select="regex-group(2)"/><xsl:text>&#xd;</xsl:text>
        <xsl:text>regex-group(3)=</xsl:text><xsl:value-of select="regex-group(3)"/><xsl:text>&#xd;</xsl:text>
      </xsl:matching-substring>
    </xsl:analyze-string>
  </xsl:template>

</xsl:stylesheet>

我正在调试其他人以前使用过的代码:这是saxon中的一个bug吗?还是我遗漏了导致返回“1”的内容?

由于这在saxon 9.5.1.7中给出了预期结果,我认为这是一个bug,因此我打开了Saxonica的报告。

该bug也在saxon HE 9.7.0-5版中。我不得不降级到9.6.0-7版本,代码才能正常工作。我之所以使用9.6.0-7版,是因为oxygen中的嵌入式xslt引擎(代码运行良好)使用的正是这个版本。

谢谢,Mystic Odin!这似乎是一个错误是的,因为对于一个组
x
来说,要包含在另一个组
y
中捕获的结果,组
x
必须将组
y
括起来,例如
((1)949)
如果括号在相同的嵌套级别上,它们不应该包含彼此的子集,如果输入是
11949
though,则此输出将是正确的。这也是我的想法,但在报告之前获得一些确认将是很好的。Bug现已修复(在源代码中)。Malick,直接向saxonica报告saxon Bug(或在上评论/重新打开我的问题)
regex-group(1)=1
regex-group(2)=
regex-group(3)=1949