【发布时间】:2015-10-26 09:20:14
【问题描述】:
我希望以下代码中的前两个正则表达式组值为空(排除其他人的代码问题):
<?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 9.6.0.5 [更新 - 也是 saxon 9.6.0.7])我得到:
regex-group(1)=1
regex-group(2)=
regex-group(3)=1949
我正在调试其他人以前可以运行的代码:这是撒克逊语中的错误吗?还是我遗漏了导致返回“1”的内容?
【问题讨论】:
-
谢谢神秘奥丁!
-
是的,这似乎是一个错误,因为对于一个组
x包括在另一个组中捕获的结果y组x必须包含组y,例如((1)949)如果括号在同一嵌套级别上,则它们不应包含彼此的子集,但如果输入为11949,则此输出将是正确的 -
这也是我的想法,但最好在报告之前得到一些确认。