脚本失败的原因之一是
'
而不是简单的撇号(
&载脂蛋白;
写入输出时使用,
但在正则表达式中
'
).
另一个原因,可见于第二个来源
<p>
终止
'
你有一个逗号,而你的正则表达式以
$
.
因此正则表达式可以是,例如:
'([^']+)'\s*:\s*'([^']+)'
细节:
-
撇号(开头)。
-
-
撇号(结束语)。
-
冒号,可能被空格包围。
-
与“第一”部分(冒号之前)的构造相同。
下面是一个示例脚本:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="p">
<xsl:analyze-string select="." regex="'([^']+)'\s*:\s*'([^']+)'">
<xsl:matching-substring>
<p><xsl:value-of select="concat(regex-group(1),
' / ', regex-group(2))"/></p>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
</xsl:stylesheet>
源数据如下:
<?xml version="1.0" encoding="utf-8" ?>
<body>
<p>'data1':'2','data3':'5'</p>
<p>'data2':'Sports like Cricket, Hokey',</p>
</body>
它输出:
<?xml version="1.0" encoding="UTF-8"?>
<body>
<p>data1 / 2</p>
<p>data3 / 5</p>
<p>data2 / Sports like Cricket, Hokey</p>
</body>
<p>
包含两个
关键字:值
对,
这是两个第一输出的来源
<p>