【问题标题】:string-length() of regex-group XSLT 2.0正则表达式组 XSLT 2.0 的字符串长度()
【发布时间】:2014-05-12 19:17:59
【问题描述】:

我有一个文件,其中包含这样的文本

文字+++文字++文字+文字

我想用一个考虑到每个组的 + 数量的元素替换 +++。 我用过这个 xslt

...
<xsl:analyze-string select="." regex="(\+)+">
<xsl:matching-substring>
<gap reason="illegible" quantity="{string-length(regex-group(1))}" unit="character"/>
</xsl:matching-substring>
</xsl:analyze-string>
...

我想要的结果是

text <gap reason="illegible" quantity="3" unit="character"/> text <gap
reason="illegible" quantity="2" unit="character"/> text <gap
reason="illegible" quantity="1" unit="character"/> text

但显然我的正则表达式总是只匹配一个,我得到了这个:

text <gap reason="illegible" quantity="1" unit="character"/> text <gap
reason="illegible" quantity="1" unit="character"/> text <gap
reason="illegible" quantity="1" unit="character"/> text

非常感谢您的任何建议。

【问题讨论】:

    标签: regex xslt-2.0 string-length


    【解决方案1】:

    使用regex="(\++)" 确保完整的字符串构成组。

    【讨论】:

      【解决方案2】:

      您的正则表达式通常可以很好地匹配连续的+ 字符。但是您只选择了() 组中的一个字符。这就是为什么你总是得到 quantity="1" 匹配。

      所以把你的正则表达式改成这个:

      ([+]+)
      

      【讨论】:

        猜你喜欢
        • 2014-10-22
        • 1970-01-01
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        • 2014-04-23
        • 2016-03-03
        • 2015-04-02
        • 2017-04-05
        相关资源
        最近更新 更多