首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串模式不正确匹配

字符串模式不正确匹配
EN

Stack Overflow用户
提问于 2013-12-18 10:21:36
回答 1查看 188关注 0票数 1

我有下面的XML代码

代码语言:javascript
复制
<page>U1/68/5, U1/73/2, V1/65B/43, V5/4E/8E</page>

我正在尝试下面的XSLT。

代码语言:javascript
复制
<xsl:template match="page"> 
      <xsl:analyze-string select="." regex="([a-zA-Z][0-9]+)/([(0-9)]+[a-zA-Z]{0,1})/([(0-9)]+[a-zA-Z]{0,1})">
          <xsl:matching-substring>
            <a
              href="{concat('er:#HKWBV3_PT_',regex-group(1),'/',regex-group(1),'-',regex-group(2),'-',regex-group(3))}">
              <xsl:value-of select="."/>
            </a>
            </xsl:matching-substring>
            <xsl:non-matching-substring>
                <xsl:value-of select="."/>
            </xsl:non-matching-substring>
        </xsl:analyze-string>    
</xsl:template>

当我使用上面的XSLT时,<xsl:non-matching-substring>块将被调用,当我在regexpal.com中尝试相同的REGEX时,条件是接受的。请让我知道我的REGEXmatch哪里出错了。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-18 11:01:38

正如我所怀疑的,{0,1}是问题的根源--但不是因为我想的原因!

http://www.w3.org/TR/xslt20/#analyze-string

注: 因为regex属性是属性值模板,所以正则表达式中的花括号必须加倍。例如,要匹配1到5个字符的序列,请编写regex=".{{1,5}}"。对于包含许多花括号的正则表达式,使用诸如regex="{'[0-9]{1,5}[a-z]{3}[0-9]{1,2}'}"这样的表示法或使用变量可能更方便。

因为这里您只使用{0,1},所以您可以使用单个?,但是当然,这并不总是一个选项。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20655436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档