3
我有一個示例XSL這樣,XSLT - 正則表達式替換字符
<doc>
<para>text . . .text</para>
<para>text . . .text. . . . . .text</para>
</doc>
正如你可以看到有在XML的一些模式,比如. . .
我需要的是替代空間點之間存在有*
。所以輸出應該是什麼樣子,
<doc>
<para>text .*.*.text</para>
<para>text .*.*.text.*.*.*.*.*.text</para>
</doc>
我寫這下面的XSLT,
<xsl:template match="text()">
<xsl:analyze-string select="." regex="(\.)( )(\.)">
<xsl:matching-substring>
<xsl:value-of select="replace(.,regex-group(2),'*')"/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
但它消除了所有其他的空間,給我下面的結果,
<doc>
<para>text .*. .text</para>
<para>text .*. .text.*. .*. .*.text</para>
</doc>
如何我可以修改我的XSLT以獲得正確的輸出...
不錯。 :)我認爲這個正則表達式可以簡化爲'「\。(\。)+」' – LukStorms
@LukStorms,你說得對,我已經添加了你的建議。 –
我認爲那些是橢圓點,最小的三個點必須。 (\。)()(\。)(\。)* to(\。)()(\。)(\。)+ is ok。文本。 .text 不應該*之間。 –