首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配XSLT Regex模式

匹配XSLT Regex模式
EN

Stack Overflow用户
提问于 2014-07-02 10:12:04
回答 1查看 4K关注 0票数 0

我有下面的XML字符串

代码语言:javascript
复制
<para><content-style font-style="bold">59/App/1/1 Amendment—</content-style>
</para>

下面的regex匹配。

代码语言:javascript
复制
 <xsl:template match="para[fn:not(@align)]/content-style[1]/text()">
    <xsl:choose>
                    <xsl:when test="fn:not(contains(substring-before(.,'/'),' '))">

 <xsl:analyze-string select="." regex="([0-9]+[\w+]?)/([0-9]+[\w+]?)/([0-9]+[\w+]?)/([0-9]+[\w+]?)">
            <xsl:matching-substring>
                <span class="phrase">
                    <a name="{concat('P',regex-group(1),'-',regex-group(2),'-',regex-group(3),regex-group(4))}"/>
                    <xsl:value-of select="."></xsl:value-of>
                </span>
            </xsl:matching-substring>
            <xsl:non-matching-substring>                

        <xsl:analyze-string select="." regex="([0-9]+[\w+]?)/([0-9]+[\w+]?)/([0-9]+[\w+]?)">
            <xsl:matching-substring>
                <span class="phrase">
                    <a name="{concat('P',regex-group(1),'-',regex-group(2),'-',regex-group(3))}"/>
                    <xsl:value-of select="."></xsl:value-of>
                </span>
            </xsl:matching-substring>
            <xsl:non-matching-substring>
                <xsl:analyze-string select="." regex="([0-9]+[\w+]?)/([0-9]+[\w+]?)">
                    <xsl:matching-substring>
                        <span class="phrase">
                            <a name="{concat('P',regex-group(1),'-',regex-group(2))}"/>
                            <xsl:value-of select="."></xsl:value-of>
                        </span>
                    </xsl:matching-substring>
                    <xsl:non-matching-substring>
                        <xsl:value-of select="."></xsl:value-of>
                    </xsl:non-matching-substring>
                </xsl:analyze-string>
            </xsl:non-matching-substring>
        </xsl:analyze-string>
       </xsl:non-matching-substring>
       </xsl:analyze-string>
            </xsl:when>
                    <xsl:otherwise>
<xsl:value-of select="."/>                  
                    </xsl:otherwise>
                </xsl:choose>
    </xsl:template>

这里我想将59/App/1/1与regex匹配,但我无法理解如何做到这一点。我试图使用analyze-string使用<xsl:analyze-string select="." regex="([0-9]+[\w+]?)/([0-9]+[\w+]?)/([0-9]+[\w+]?)/([0-9]+[\w+]?)">,但是没有匹配。请让我知道我哪里出错了,以及如何解决这个问题。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-07-02 10:19:47

在你的模式中:

代码语言:javascript
复制
([0-9]+[\w+]?)
  • [0-9]+尽可能多次匹配0到9之间的单个字符。
  • [\w+]?匹配+[A-Za-z0-9_]字符集中的单个字符,0次和1次。

因为这个模式永远不会匹配单词App,所以正则表达式失败了。

您可以使用以下模式:

代码语言:javascript
复制
(\w+)/(\w+)/(\w+)/(\w+)

因为\w已经包含了[0-9]类。

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

https://stackoverflow.com/questions/24528452

复制
相关文章

相似问题

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