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>
</xsl:text>
<xsl:text>regex-group(2)=</xsl:text><xsl:value-of select="regex-group(2)"/><xsl:text>
</xsl:text>
<xsl:text>regex-group(3)=</xsl:text><xsl:value-of select="regex-group(3)"/><xsl:text>
</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